大家好,给大家分享一下python如何生成excel图表,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
目录
一、水球图
添加标题
二、仪表盘图
三、漏斗图
四、热力图
五、日历图
六、词云图
七、条形图
设置标题
设置风格
工具箱
编辑
八、折线图
九、散点图
十、涟漪散点图
十一、象形条形图
十二、K线图
十三、箱线图
十四、饼图
十五、玫瑰图
十六、雷达图
十七、极坐标散点图
十八、热力地图(地图热力图)
十九、全球各国的热力地图
二十、省份的热力图
二十一、全国的某些城市的热力图
二十二、区县的地图
二十三、地理坐标热力图
二十四、热力散点图
二十五、地理连线图
二十六、太阳图
二十七、树形图
二十八、网络图的绘制
二十九、辐射状的网络图
三十、3D条形图
三十一、3D条形图-堆叠
三十二、3D折线图
三十三、3D散点图
三十四、双轴坐标图
三十五、顺序多图
三十六、时间线图
一、水球图
from pyecharts.charts import Liquid
lqd=Liquid()
#add传入数据
lqd.add('完成率',[0.6])
#绘制
lqd.render()
在它返回的路径下找到这个文件
用浏览器打开,(这其实是一张动图)
或者指定存储的目录和文件名
from pyecharts.charts import Liquid
lqd=Liquid()
#add传入数据
lqd.add('完成率',[0.6])
#绘制
lqd.render('/Users/Desktop/waterball.html')
简化版本的代码
from pyecharts.charts import Liquid
#先创建对象,然后add传入数据,最后绘制
Liquid().add('完成率',[0.6]).render('/Users/Desktop/waterball.html')
或者使用括号括起来,然后换行
from pyecharts.charts import Liquid
#先创建对象,然后add传入数据,最后绘制
(Liquid().add('完成率',[0.6])
.render('/Users/Desktop/waterball.html'))
绘图完成之后直接打开
from pyecharts.charts import Liquid
#先创建对象,然后add传入数据,最后绘制
f=(
Liquid()
.add('完成率',[0.6])
.render()
)
#python内置的打开浏览器的模块
import webbrowser as wb
wb.open(f)
或者是
from pyecharts.charts import Liquid
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
#先创建对象,然后add传入数据,最后绘制
Liquid().add('完成率',[0.6]).render_notebook()
添加标题
from pyecharts.charts import Liquid
#设置选项的库
import pyecharts.options as opts
#先创建对象,然后add传入数据,最后绘制
f=(
Liquid()
.add('完成率',[0.6])
.set_global_opts(
#设置标题
title_opts=opts.TitleOpts(
title='实习任务完成率',
pos_left='center'
)
)
.render()
)
#python内置的打开浏览器的模块
import webbrowser as wb
wb.open(f)
二、仪表盘图
from pyecharts.charts import Gauge
import pyecharts.options as opts
import webbrowser as wb
f=(
Gauge()
.add('',
[('完成率\n\n',76.5)],
min_=0,
max_=100
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2022年公司销售指标完成率',
pos_left='center'
)
)
.render('/Users/Desktop/Gauge.html')
)
from pyecharts.charts import Gauge
import pyecharts.options as opts
import webbrowser as wb
f=(
Gauge()
.add('',
#设置仪表盘指针的位置
[('完成率\n\n',76.5)],
#设置仪表盘的上限和下限
min_=0,
max_=100,
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(
#设置不同刻度区间的颜色
color=[
(0.25,'red'),
(0.50,'yellow'),
(0.75,'green'),
(1.00,'blue')
],
width=35
)
)
)
#设置标题
.set_global_opts(
title_opts=opts.TitleOpts(
title='2022年公司销售指标完成率',
pos_left='center'
)
)
.render('/Users/Desktop/Gauge.html')
)
一是,用’red’、’yellow’、’blue’等相应颜色的英文单词字符串来表示;
二是,用’#ff0000’、’#ffff00’、’#0000ff’等’#’开头并加上6位十六进制描述RGB颜色值的字符串来表示;
三是,用’rgb(255,0,0)’、’rgb(255,255,0)’、’rgb(0,0,255)’等rgb()函数的形式表示。
三、漏斗图
from pyecharts.charts import Funnel
import pyecharts.options as opts
import webbrowser as wb
from pyecharts.faker import Faker
#随机选择一个主题
labels=Faker.choose()
#随机选择一个数字
values=Faker.values()
#对标签和数字进行配对
data=list(zip(labels, values))
data
f=(
Funnel()
.add('', data)
.set_global_opts(title_opts=opts.TitleOpts(title='销量分析'))
.render('/Users/Desktop/faker.html')
)
默认是将标签放在外面的,我们这样修改一下,将标签放在里面
from pyecharts.charts import Funnel
import pyecharts.options as opts
import webbrowser as wb
from pyecharts.faker import Faker
#随机选择一个主题
labels=Faker.choose()
#随机选择一个数字
values=Faker.values()
#对标签和数字进行配对
data=list(zip(labels, values))
data
f=(
Funnel()
.add('',
data,
label_opts=opts.LabelOpts(
position='inside'
)
)
.set_global_opts(title_opts=opts.TitleOpts(title='销量分析'))
.render('/Users/Desktop/faker.html')
)
如何将漏斗倒过来(添加sort_的参数)
from pyecharts.charts import Funnel
import pyecharts.options as opts
import webbrowser as wb
from pyecharts.faker import Faker
#随机选择一个主题
labels=Faker.choose()
#随机选择一个数字
values=Faker.values()
#对标签和数字进行配对
data=list(zip(labels, values))
data
f=(
Funnel()
.add('',
data,
sort_='ascending',
label_opts=opts.LabelOpts(
position='inside'
)
)
.set_global_opts(title_opts=opts.TitleOpts(title='销量分析'))
.render('/Users/Desktop/faker.html')
)
四、热力图
from pyecharts.charts import HeatMap
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
data=[(i,j,random.randint(0,150))
#模拟一周7天,24小时的降雨量
for i in range(24)
for j in range(7)]
f=(
HeatMap()
.add_xaxis(Faker.clock)
.add_yaxis('',Faker.week,data)
.set_global_opts(
title_opts=opts.TitleOpts(
title='一周降雨量分布情况',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
#将图例改成水平的
orient='horizontal',
max_=150,
#将我们的热力图条变成选择
is_piecewise=True,
#f放在正中间的位置
pos_left='center'
)
)
.render('/Users/Desktop/hotmap.html')
)
连续的选择调节
from pyecharts.charts import HeatMap
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
data=[(i,j,random.randint(0,150))
#模拟一周7天,24小时的降雨量
for i in range(24)
for j in range(7)]
f=(
HeatMap()
.add_xaxis(Faker.clock)
.add_yaxis('',Faker.week,data)
.set_global_opts(
title_opts=opts.TitleOpts(
title='一周降雨量分布情况',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
#将图例改成水平的
orient='horizontal',
max_=150,
# is_piecewise=True,
#f放在正中间的位置
pos_left='center'
)
)
.render('/Users/Desktop/hotmap.html')
)
五、日历图
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(range_='2021')
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
标签使用中文进行显示
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
range_='2021',
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
将年份2021隐藏掉
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
range_='2021',
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
调整显示的日期范围
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
#显示日历的区间
range_=['2021-01','2021-12-31'],
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
或者调成别的时间范围 ,这里我们调节成了到2021年8月1号的
import datetime as dt
import random
from pyecharts.charts import Calendar
import pyecharts.options as opts
begin=dt.date(2021,1,1)
end=dt.date(2021,12,31)
data=[
(begin+dt.timedelta(days=i),random.randint(0,30000))
for i in range((end-begin).days+1)
]
f=(
Calendar()
.add(
#添加数据
'',
data,
#指定年份是2021年
calendar_opts=opts.CalendarOpts(
#显示日历的区间
range_=['2021-01','2021-8-1'],
#图上的名字用中文来显示
daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'),
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'),
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
#添加主标题
title='2021年每日微信步数情况'
),
#设置图例
visualmap_opts=opts.VisualMapOpts(
#设置图例的最小值和最大值
min_=0,
max_=30000,
#水平放置图例
orient='horizontal',
#分区间显示
is_piecewise=True,
#距离左边向右偏离225个像素
pos_left='225px',
#将图例放在顶部
pos_top='top'
)
)
.render('/Users/Desktop/datemap.html')
)
六、词云图
from pyecharts.faker import Faker
from pyecharts.charts import WordCloud
import pyecharts.options as opts
data=[]
for i in range(5):
#将Faker随机选择的主题和其值取出来
#并且打包成一对一对的数据映射
data+=list(zip(Faker.choose(),Faker.values()))
f={
WordCloud()
#添加数据
.add('',data,shape='star')
.set_global_opts(
title_opts=opts.TitleOpts(
#设置主标题
title='词云图',
#设置副标题
subtitle='(五角星形)',
)
)
.render('/Users/Desktop/wordcloud.html')
}
词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选Python工程师考什么证书。
七、条形图
from pyecharts.charts import Bar
f=(
Bar()
.add_xaxis(['催逝员','薛总司令','王大队长','老冯'])
#直角坐标系的系列名称是只有y轴才有
.add_yaxis('语文',[75,90,81,55])
.add_yaxis('数学',[66,78,95,50])
.render('/Users/Desktop/bar.html')
)
设置标题
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Bar
df=pd.read_csv('/Users/Data(2)/orders.csv')
#因为生成的是series,所以需要转换成list
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f=(
Bar()
.add_xaxis(x)
.add_yaxis('销售额',y1)
.add_yaxis('利润额',y2)
.set_global_opts(
title_opts=opts.TitleOpts(
#设置主标题
title='销售利润分析',
#设置副标题
subtitle='(2021年)'
)
)
.render('/Users/Desktop/bar.html')
)
设置风格
import pandas as pd
from pyecharts.charts import Bar
df=pd.read_csv('/Users/Data(2)/orders.csv')
#因为生成的是series,所以需要转换成list
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f=(
#shine
#设置风格是light的配色
Bar(init_opts=opts.InitOpts(theme='light'))
.add_xaxis(x)
.add_yaxis('销售额',y1)
.add_yaxis('利润额',y2)
.set_global_opts(
title_opts=opts.TitleOpts(
#设置主标题
title='销售利润分析',
#设置副标题
subtitle='(2021年)'
)
)
.render('/Users/Desktop/bar.html')
)
工具箱
import pandas as pd
from pyecharts.charts import Bar
df=pd.read_csv('/Users/Data(2)/orders.csv')
#因为生成的是series,所以需要转换成list
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f=(
#shine
Bar(init_opts=opts.InitOpts(theme='light'))
.add_xaxis(x)
.add_yaxis('销售额',y1)
.add_yaxis('利润额',y2)
.set_global_opts(
#添加工具箱
toolbox_opts=opts.ToolboxOpts(),
title_opts=opts.TitleOpts(
#设置主标题
title='销售利润分析',
#设置副标题
subtitle='(2021年)',
),
)
.render('/Users/Desktop/bar.html')
)
八、折线图
import pandas as pd
from pyecharts.charts import Line
import pyecharts.options as opts
df=pd.read_csv('/Users/Data(2)/sales.csv',header=None)
df
df['Year']=df[1].apply(lambda x: int(x[:4]))
#分组统计不同的店铺的2019年的经营状况
data=df[df['Year']==2019][[2,16,19]].groupby(2).sum()
x=list(data.index)
#销售额
#round保留两位小数
y1=list(data[16].apply(lambda x: round(x,2)))
#利润额
y2=list(data[19].apply(lambda x: round(x,2)))
f = (
#设置主题为shine
Line(init_opts=opts.InitOpts(theme='shine'))
#传入x轴
.add_xaxis(x)
#传入y轴的数据,一共绘制两条折线
#设置折线平滑
.add_yaxis('销售额', y1, is_smooth=True)
.add_yaxis('利润额', y2, is_smooth=True)
#添加主标题和副标题
.set_global_opts(
title_opts=opts.TitleOpts(
title='门店销售额利润额的比较分析',
subtitle='2019年企业经营状况分析'
),
toolbox_opts=opts.ToolboxOpts()
)
.render('/Users/Desktop/line.html')
)
import pandas as pd
from pyecharts.charts import Line
import pyecharts.options as opts
df=pd.read_csv('/Users/Documents/orders.csv')
x=df['category'].tolist()
y1=df['x'].tolist()
y2=df['y'].tolist()
f = (
#设置主题为shine
Line(init_opts=opts.InitOpts(theme='chalk'))
#传入x轴
.add_xaxis(x)
#传入y轴的数据,一共绘制两条折线
#设置折线平滑
.add_yaxis('销售额', y1, is_smooth=True)
.add_yaxis('利润额', y2, is_smooth=True)
#添加主标题和副标题
.set_global_opts(
title_opts=opts.TitleOpts(
title='门店销售额利润额的比较分析',
subtitle='2019年企业经营状况分析'
),
toolbox_opts=opts.ToolboxOpts()
)
.render('/Users/Desktop/test/test4.html')
)
九、散点图
#绘制散点图
from pyecharts.charts import Scatter
import pyecharts.options as opts
import random
x=[random.randint(0,50) for _ in range(50)]
y1=[random.randint(0,50) for _ in range(50)]
y2=[random.randint(0,50) for _ in range(50)]
f={
Scatter()
.add_xaxis(x)
#第一个参数是系列名称
#最后一个参数有没有逗号没有关系
.add_yaxis(
'第一组数据',
y1,
)
.add_yaxis(
'第二组数据',
y2,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="两组数据对比"
)
)
.render('/Users/Desktop/scatter.html')
}
如何不显示标签和修改点的形状和修改主题风格
#绘制散点图
from pyecharts.charts import Scatter
import pyecharts.options as opts
import random
x=[random.randint(0,50) for _ in range(50)]
y1=[random.randint(0,50) for _ in range(50)]
y2=[random.randint(0,50) for _ in range(50)]
f={
#设置为深夜模式
Scatter(init_opts=opts.InitOpts(theme='dark'))
.add_xaxis(x)
#第一个参数是系列名称
#最后一个参数有没有逗号没有关系
.add_yaxis(
'第一组数据',
y1,
#默认的标记就是circle
symbol='circle',
label_opts=opts.LabelOpts(
#不显示标签
is_show=False
)
)
.add_yaxis(
'第二组数据',
y2,
symbol='square',
label_opts=opts.LabelOpts(
#不显示标签
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="两组数据对比",
)
)
.render('/Users/Desktop/scatter.html')
}
十、涟漪散点图
#绘制涟漪散点图
from pyecharts.charts import EffectScatter
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#手机的相关标签
x=Faker.phones
#随机产生两组数据
y1=Faker.values()
y2=Faker.values()
f=(
EffectScatter()
.add_xaxis(x)
#第一个参数是系列名称
#后面那个参数是销售量
.add_yaxis(
'当月',
y1,
)
.add_yaxis(
'上月',
y2,
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售情况对比分析',
subtitle='(2022年11月)'
)
)
.render('/Users/Desktop/scatter.html')
)
设置主题和形状
#绘制涟漪散点图
from pyecharts.charts import EffectScatter
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#手机的相关标签
x=Faker.phones
#随机产生两组数据
y1=Faker.values()
y2=Faker.values()
f=(
#黑板主题风格
EffectScatter(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
#第一个参数是系列名称
#后面那个参数是销售量
.add_yaxis(
'当月',
y1,
#设置形状
symbol='triangle'
)
.add_yaxis(
'上月',
y2,
#设置形状
symbol='rect'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售情况对比分析',
subtitle='(2022年11月)'
)
)
.render('/Users/Desktop/scatter.html')
)
或者是圆角矩形和菱形
#绘制涟漪散点图
from pyecharts.charts import EffectScatter
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#手机的相关标签
x=Faker.phones
#随机产生两组数据
y1=Faker.values()
y2=Faker.values()
f=(
#黑板主题风格
EffectScatter(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
#第一个参数是系列名称
#后面那个参数是销售量
.add_yaxis(
'当月',
y1,
#设置形状
symbol='diamond'
)
.add_yaxis(
'上月',
y2,
#设置形状
#圆角矩形
symbol='roundRect'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售情况对比分析',
subtitle='(2022年11月)'
)
)
.render('/Users/Desktop/scatter.html')
)
十一、象形条形图
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
更改形状为圆角矩形
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
图形重复来达到高度
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect',
#图形重复
symbol_repeat=True
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
指定叠加的大小
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
可以切割
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities)
.add_yaxis('',
values,
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
将图标横过来
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
#需要将数据和标签也逆置过来
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
不显示数据
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True,
label_opts=opts.LabelOpts(is_show=False)
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
)
)
.render('/Users/Desktop/pictorialbar.html')
)
将做坐标轴隐藏掉
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
symbol='roundRect',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True,
label_opts=opts.LabelOpts(is_show=False)
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
),
#x轴不显示标签
xaxis_opts=opts.AxisOpts(
is_show=False
),
#y轴不显示标签
yaxis_opts=opts.AxisOpts(
#刻度不显示
axistick_opts=opts.AxisTickOpts(
is_show=False
),
#将轴线隐藏掉
axisline_opts=opts.AxisOpts(
is_show=False
)
)
)
.render('/Users/Desktop/pictorialbar.html')
)
将图标替换成小人图标
#绘制象牙条形图
from pyecharts.charts import PictorialBar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
cities=['北京','上海','广州','深圳','杭州']
values=[2173,2420,1404,1191,1220]
f=(
PictorialBar()
.add_xaxis(cities[::-1])
.add_yaxis('',
values[::-1],
#image://是协议
#后面写图片的路径
#路径里没有中文,不然可能识别出不来
symbol='image:///Users/Desktop/person.bmp',
#图形重复
symbol_repeat=True,
symbol_size=20,
is_symbol_clip=True,
label_opts=opts.LabelOpts(is_show=False)
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='2021年底北上广深人口数量',
subtitle='(单位:万人)'
),
#x轴不显示标签
xaxis_opts=opts.AxisOpts(
is_show=False
),
#y轴不显示标签
yaxis_opts=opts.AxisOpts(
#刻度不显示
axistick_opts=opts.AxisTickOpts(
is_show=False
),
axisline_opts=opts.AxisOpts(
is_show=False
)
)
)
.render('/Users/Desktop/person.html')
)
十二、K线图
#绘制象牙条形图
from pyecharts.charts import Kline
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
import pandas as pd
df=pd.read_csv('/Users/Documents/stocks.csv',header=None)
df['Date']=pd.to_datetime(df[0])
data=df[(df['Date']>=pd.Timestamp('2022-10-01'))&(df['Date']<=pd.Timestamp('2022-11-16'))]
x=list(data[0])[::-1]
y=[]
#逆序取出来
for i in range(len(x)-1,-1,-1):
y.append([
data.iloc[i,1],
data.iloc[i,4],
data.iloc[i,3],
data.iloc[i,2]
])
f=(
Kline(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
.add_yaxis(
#系列名称
'股票价格',
y
)
#设置全局配置
.set_global_opts(
title_opts=opts.TitleOpts(
title="股票价格走势-日K线"
)
)
.render('/Users/Desktop/K_line.html')
)
十三、箱线图
from pyecharts.charts import Boxplot
import pyecharts.options as opts
import pandas as pd
import webbrowser as wb
df=pd.read_csv('/Users/Documents/score.csv',encoding='gbk')
x=list(df['课程'].unique())
y=[]
for c in x:
y.append(df[df['课程']==c]['成绩'])
f=(
Boxplot(init_opts=opts.InitOpts(theme='chalk'))
.add_xaxis(x)
#系列名称为空,然后数据为y,让preprare_data为我们处理分位数
.add_yaxis('',Boxplot.prepare_data(y))
#转置
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title='各科成绩分布情况',
pos_left='center'
)
)
.render('/Users/Desktop/boxplot.html')
)
十四、饼图
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.fruits
y=Faker.values()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'水果',
#只能传入列表
list(zip(x,y)),
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c}箱,占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='水果销量分析',
subtitle='(2022年10月)'
)
)
.render('/Users/Desktop/pie.html')
)
十五、玫瑰图
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.clothes
y=Faker.values()
y.sort()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'服饰',
#只能传入列表
list(zip(x,y)),
#按照区域面积来实现
rosetype='area'
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c},占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='主要服饰销量分析',
subtitle='(2022年10月)'
)
)
.render('/Users/Desktop/flower.html')
)
将标签设置为竖直的
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.clothes
y=Faker.values()
y.sort()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'服饰',
#只能传入列表
list(zip(x,y)),
#按照区域面积来实现
rosetype='area',
#在水平50%的位置,也就是居中,然后向下约为55%的位置
center=('50%','55%'),
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c},占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='主要服饰销量分析',
subtitle='(2022年10月)',
pos_left='center',
pos_top='5%'
),
legend_opts=opts.LegendOpts(
#将水平的标签改成竖直的,默认是将标签放在中间的
orient='vertical',
#从顶部往下移动10%
pos_top='10%',
pos_right='right',
)
)
.render('/Users/Desktop/flower.html')
)
将花的花心置空
from pyecharts.faker import Faker
from pyecharts.charts import Pie
import pyecharts.options as opts
import pandas as pd
x=Faker.clothes
y=Faker.values()
y.sort()
f=(
Pie(init_opts=opts.InitOpts(theme='chalk'))
.add(
'服饰',
#只能传入列表
list(zip(x,y)),
#需要挖掉的半径
radius=['15%','50%'],
#按照区域面积来实现
rosetype='area',
#在水平50%的位置,也就是居中,然后向下约为55%的位置
center=('50%','55%'),
)
.set_colors(['red','yellow','orange','green','cyan','blue','purple'])
.set_series_opts(
#设置标签
label_opts=opts.LabelOpts(
formatter='{b}:{c},占{d}%'
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='主要服饰销量分析',
subtitle='(2022年10月)',
pos_left='center',
pos_top='5%'
),
legend_opts=opts.LegendOpts(
#将水平的标签改成竖直的,默认是将标签放在中间的
orient='vertical',
#从顶部往下移动10%
pos_top='10%',
pos_right='right',
)
)
.render('/Users/Desktop/flower.html')
)
十六、雷达图
from pyecharts.faker import Faker
from pyecharts.charts import Radar
import pyecharts.options as opts
import pandas as pd
df=pd.read_csv('/Users/Documents/sales.csv',header=None,usecols=[11,16,19]).groupby(11).sum()
rii=[]
#设置雷达图的轴线和标签
for i in df.index:
rii.append(opts.RadarIndicatorItem(i,max_=4600000))
#销售额
data1=list(df[16])
#利润额
data2=list(df[19])
f=(
Radar()
#绘制的模式(框架)
#设置位置,左右居中,从上往下55%的位置
.add_schema(rii,center=['50%','55%'])
.add(
'销售额',
[data1],
color='blue',
symbol='circle',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
.add(
'利润额',
[data2],
color='red',
symbol='square',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='区域销售情况分析',
pos_left='center'
),
#将图例往下移30个像素
legend_opts=opts.LegendOpts(pos_top=30)
)
.render('/Users/Desktop/radar.html')
)
将图例放在右侧
from pyecharts.faker import Faker
from pyecharts.charts import Radar
import pyecharts.options as opts
import pandas as pd
df=pd.read_csv('/Users/sales.csv',header=None,usecols=[11,16,19]).groupby(11).sum()
rii=[]
#设置雷达图的轴线和标签
for i in df.index:
rii.append(opts.RadarIndicatorItem(i,max_=4600000))
#销售额
data1=list(df[16])
#利润额
data2=list(df[19])
f=(
Radar()
#绘制的模式(框架)
#设置位置,左右居中,从上往下55%的位置
.add_schema(rii,center=['50%','55%'])
.add(
'销售额',
[data1],
color='blue',
symbol='circle',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
.add(
'利润额',
[data2],
color='red',
symbol='square',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='区域销售情况分析',
pos_left='center'
),
#将图例往下移30个像素
legend_opts=opts.LegendOpts(
pos_top='5%',
pos_right='right',
orient='vertical',
),
)
.render('/Users/Desktop/radar.html')
)
将图例放在底部
from pyecharts.faker import Faker
from pyecharts.charts import Radar
import pyecharts.options as opts
import pandas as pd
df=pd.read_csv('/Users/sales.csv',header=None,usecols=[11,16,19]).groupby(11).sum()
rii=[]
#设置雷达图的轴线和标签
for i in df.index:
rii.append(opts.RadarIndicatorItem(i,max_=4600000))
#销售额
data1=list(df[16])
#利润额
data2=list(df[19])
f=(
Radar()
#绘制的模式(框架)
#设置位置,左右居中,从上往下55%的位置
.add_schema(rii,center=['50%','50%'])
.add(
'销售额',
[data1],
color='blue',
symbol='circle',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
.add(
'利润额',
[data2],
color='red',
symbol='square',
areastyle_opts=opts.AreaStyleOpts(
#设置雷达图的不透明度
opacity=0.1
)
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='区域销售情况分析',
pos_left='center'
),
#将图例往下移30个像素
legend_opts=opts.LegendOpts(
pos_bottom='bottom',
pos_right='center',
orient='horizontal',
),
)
.render('/Users/Desktop/radar.html')
)
十七、极坐标散点图
import random
from pyecharts.charts import Polar
import pyecharts.options as opts
import webbrowser as wb
#极坐标上的数据和角度
data=[(i,random.randint(1,100)) for i in range(50)]
f=(
Polar()
.add('',
data,
#普通的散点
type_='scatter'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='极坐标散点图'
)
)
.render('/Users/Desktop/polar.html')
)
添加涟漪特效
import random
from pyecharts.charts import Polar
import pyecharts.options as opts
import webbrowser as wb
#极坐标上的数据和角度
data=[(i,random.randint(1,100)) for i in range(50)]
f=(
Polar()
.add('',
data,
#普通的散点
type_='effectScatter',
#添加特效
effect_opts=opts.EffectOpts(
#设置比例尺
scale=9
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='极坐标散点图'
)
)
.render('/Users/Desktop/polar1.html')
)
更改主题
import random
from pyecharts.charts import Polar
import pyecharts.options as opts
import webbrowser as wb
#极坐标上的数据和角度
data=[(i,random.randint(1,100)) for i in range(50)]
f=(
Polar(init_opts=opts.InitOpts(theme='chalk'))
.add('',
data,
#普通的散点
type_='effectScatter',
#添加特效
effect_opts=opts.EffectOpts(
#设置比例尺
scale=9
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='极坐标散点图'
)
)
.render('/Users/Desktop/polar1.html')
)
十八、热力地图(地图热力图)
#热力地图
from pyecharts.charts import Map
import pyecharts.options as opts
import webbrowser as wb
import random
data=dict(新疆=165,西藏=122.84,内蒙古=118.3,青海=72.12,四川=48.5,黑龙江=45.46,甘肃=45.4,云南=39.4)
f=(
Map()
#第一个参数是系列名称,我们这里没有,就空着
#第二个参数是数据
.add('',
#将键和值取出来,生成一个对应的元组,然后转换成一个列表
list(data.items()),
'china'
)
#将标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国面积最大的8个省区'
),
#添加可视化的颜色
visualmap_opts=opts.VisualMapOpts(
min_=39.4,
max_=165
)
)
.render('/Users/Desktop/map.html')
)
十九、全球各国的热力地图
from pyecharts.charts import Map
import pyecharts.options as opts
import webbrowser as wb
import random
countries=['United states','China','Japen','Germany','United kindom']
gdps=[22.94,16.86,5.1,4.23,3.11]
data=list(zip(countries,gdps))
f=(
Map()
.add('',data,'world')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2021年全球GDP前五的国家",
subtitle='(单位:万亿美元)'
)
)
.render('/Users/Desktop/theworld.html')
)
给指定的国家添加颜色
from pyecharts.charts import Map
import pyecharts.options as opts
import webbrowser as wb
import random
countries=['United States','China','Japan','Germany','United Kingdom']
gdps=[22.94,16.86,5.1,4.23,3.11]
data=list(zip(countries,gdps))
f=(
Map()
.add('',data,'world')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2021年全球GDP前五的国家",
subtitle='(单位:万亿美元)'
),
visualmap_opts=opts.VisualMapOpts(
min_=3.11,
max_=22.94
)
)
.render('/Users/Desktop/theworld.html')
)
二十、省份的热力图
from pyecharts.charts import Map
import pyecharts.options as opts
data=[('杭州市',300),('宁波市',200),('温州市',100)]
f=(
Map()
.add('',data,'浙江')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="浙江省",
),
visualmap_opts=opts.VisualMapOpts(
min_=100,
max_=300
)
)
.render('/Users/Desktop/zhejiang.html')
)
二十一、全国的某些城市的热力图
from pyecharts.charts import Map
import pyecharts.options as opts
data=[('北京',1),('上海',2),('广州',3),('深圳',4),('杭州',5)]
f=(
Map()
.add('',data,'china-cities')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="全国各市",
),
visualmap_opts=opts.VisualMapOpts(
min_=1,
max_=6
)
)
.render('/Users/Desktop/cities.html')
)
二十二、区县的地图
from pyecharts.charts import Map
import pyecharts.options as opts
data=[('西湖区',1),('拱墅区',2),('余杭区',1),('桐庐县',4),('建德市',5)]
f=(
Map()
.add('',data,'杭州')
#在系列中将我们的标签隐藏掉
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="杭州各区县市",
),
visualmap_opts=opts.VisualMapOpts(
min_=1,
max_=6
)
)
.render('/Users/Desktop/local.html')
)
二十三、地理坐标热力图
from pyecharts.charts import Geo
import pyecharts.options as opts
from pyecharts.faker import Faker
data=list(zip(Faker.provinces,Faker.values()))
f=(
Geo()
.add_schema('china')
.add('',data)
#设置系列的参数
.set_series_opts(
#热力图
type='heatmap'
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国各市'
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=100
)
)
.render('/Users/Desktop/cities.html')
)
二十四、热力散点图
from pyecharts.charts import Geo
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[('北京',1),('上海',2),('广州',3),('深圳',4),('杭州',5),('阿克苏',6)]
f=(
Geo()
#地图为中国地图
.add_schema('china')
.add('',data)
#设置系列的参数
.set_series_opts(
#热力图
type='scatter',
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国各市'
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=6
)
)
.render('/Users/Desktop/cities2.html')
)
按照大小绘制散点
from pyecharts.charts import Geo
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[('北京',1),('上海',2),('广州',3),('深圳',4),('杭州',5),('阿克苏',6)]
f=(
Geo()
#地图为中国地图
.add_schema('china')
.add('',data)
#设置系列的参数
.set_series_opts(
#热力图
type='scatter',
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='全国各市'
),
visualmap_opts=opts.VisualMapOpts(
min_=0,
max_=6,
type_='size'
)
)
.render('/Users/Desktop/cities2.html')
)
二十五、地理连线图
from pyecharts.charts import Geo
import pyecharts.options as opts
data=[('北京',10),('上海',20),('广州',30),('深圳',40),('杭州',50),('阿克苏',60)]
f=(
Geo()
#使用什么样的地图
.add_schema('china')
#添加数据
#第一个参数为系列标题,空着就是没有
.add('',
data,
type_='effectScatter',
)
.add(
'杭州出发的航班',[('杭州','北京'),('杭州','广州'),('杭州','深圳'),('杭州','阿克苏')],
#设置成连线的形式
type_='lines',
#设置线的弯曲程度
linestyle_opts=opts.LineStyleOpts(
curve=0.2
)
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="几个城市"
)
)
.render('/Users/Desktop/geo.html')
)
调整参数,添加特效
from pyecharts.charts import Geo
import pyecharts.options as opts
data=[('北京',10),('上海',20),('广州',30),('深圳',40),('杭州',50),('阿克苏',60)]
f=(
Geo()
#使用什么样的地图
.add_schema('china')
#添加数据
#第一个参数为系列标题,空着就是没有
.add('',
data,
type_='effectScatter',
)
.add(
'杭州出发的航班',[('杭州','北京'),('杭州','广州'),('杭州','深圳'),('杭州','阿克苏')],
#设置成连线的形式
type_='lines',
#设置线的弯曲程度
linestyle_opts=opts.LineStyleOpts(
curve=0.2
),
effect_opts=opts.EffectOpts(
symbol_size=9,
color='blue'
)
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="几个城市"
),
visualmap_opts=opts.VisualMapOpts(
min_=10,
max_=60
)
)
.render('/Users/Desktop/geo.html')
)
二十六、太阳图
from pyecharts.charts import Sunburst
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
#下面是直接用faker中的数据
opts.SunburstItem(
name='水果',
children=[
#将我们的Faker取出来的随机组合和我们的水果使用zip函数组成一个元组
opts.SunburstItem(value,name) for(value,name)
in zip(Faker.values(),Faker.fruits)
],
#将这一个项目的主题设置成红色
itemstyle_opts=opts.ItemStyleOpts(
color='red'
)
),
opts.SunburstItem(
name='手机',
children=[
opts.SunburstItem(value,name) for(value,name)
in zip(Faker.values(),Faker.phones)
],
itemstyle_opts=opts.ItemStyleOpts(
color='yellow'
)
),
opts.SunburstItem(
name='服饰',
children=[
opts.SunburstItem(value,name) for(value,name)
in zip(Faker.values(),Faker.clothes)
],
itemstyle_opts=opts.ItemStyleOpts(
color='blue'
)
),
#这是我们自己写的数据
#如果我们自己写数据的话,我们需要将我们的数据一层一层套进去
opts.SunburstItem(
500,
name='其他',
children=[
opts.SunburstItem(
400,
name='食品',
children=[
opts.SunburstItem(
200,
'面包'
),
opts.SunburstItem(
100,
'大米'
)
]
),
opts.SunburstItem(
30,
'饮料',
),
opts.SunburstItem(
20,
'白酒'
)
]
)
]
f=(
Sunburst()
#设置里面挖掉多少,
.add('',data,radius=['20%','100%'])
.set_global_opts(
title_opts=opts.TitleOpts(
title='销售量品类层次分析',
subtitle='(2022年11月)',
pos_left='center'
)
)
.render('/Users/Desktop/sun.html')
)
二十七、树形图
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
.add('',data,)
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
调整我们的树的方向
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,orient='BT')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
从上往下长
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,orient='TB')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
从右往左
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,orient='RL')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
辐射状的树
from pyecharts.charts import Tree
import pyecharts.options as opts
from pyecharts.faker import Faker
data=[
opts.TreeItem(
name='商品',
children=[
opts.TreeItem(
name='水果',
children=[
opts.TreeItem(name) for name in Faker.fruits
]
),
opts.TreeItem(
name='手机',
children=[
opts.TreeItem(name) for name in Faker.phones
]
),
opts.TreeItem(
name='服饰',
children=[
opts.TreeItem(name) for name in Faker.clothes
]
),
opts.TreeItem(
name='其他',
children=[
opts.TreeItem(
name='食品',
children=[
opts.TreeItem('面包'),
opts.TreeItem('大米')
]
),
opts.TreeItem('饮料'),
opts.TreeItem('白酒')
]
)
]
)
]
f=(
Tree()
#设置orient='BT'就可以让树从底部往上面生长
.add('',data,layout='radial')
.set_global_opts(
title_opts=opts.TitleOpts(
title='商品层次分类',
pos_left='center'
)
)
.render('/Users/Desktop/tree.html')
)
二十八、网络图的绘制
#网络图
from pyecharts.charts import Graph
import pyecharts.options as opts
from pyecharts.faker import Faker
nodes=[
opts.GraphNode(name='中国',symbol_size=60),
opts.GraphNode(name='美国',symbol_size=50),
opts.GraphNode(name='俄罗斯',symbol_size=40),
opts.GraphNode(name='英国',symbol_size=30),
opts.GraphNode(name='德国',symbol_size=20),
opts.GraphNode(name='日本',symbol_size=10),
]
links=[]
for (i,nodeSource) in enumerate(nodes):
for(j,nodetarget) in enumerate(nodes):
if i<j:
#两两之间建立链接
links.append(opts.GraphLink(source=nodeSource.get("name"),
target=nodetarget.get("name")))
f=(
Graph()
#分别为类别名称结点,链接和排斥力
.add('h',nodes,links,repulsion=3000)
.set_global_opts(
title_opts=opts.TitleOpts(
title='网络图-基本'
)
)
.render('/Users/Desktop/net.html')
)
二十九、辐射状的网络图
from pyecharts.charts import Graph
import pyecharts.options as opts
nodes=[
opts.GraphNode(name='中国',symbol_size=60),
opts.GraphNode(name='美国',symbol_size=50),
opts.GraphNode(name='俄罗斯',symbol_size=40),
opts.GraphNode(name='英国',symbol_size=30),
opts.GraphNode(name='德国',symbol_size=20),
opts.GraphNode(name='日本',symbol_size=10),
]
links=[]
for (i,nodeSource) in enumerate(nodes):
for(j,nodetarget) in enumerate(nodes):
if i<j:
#两两之间建立链接
links.append(opts.GraphLink(source=nodeSource.get("name"),
target=nodetarget.get("name")))
f=(
Graph()
.add('',
nodes,
links,
#辐射状的网络
layout='circular',
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='辐射状的网络图'
)
)
.render('/Users/Desktop/net1.html')
)
from pyecharts.charts import Graph
import pyecharts.options as opts
nodes=[
opts.GraphNode(name='中国',symbol_size=60),
opts.GraphNode(name='美国',symbol_size=50),
opts.GraphNode(name='俄罗斯',symbol_size=40),
opts.GraphNode(name='英国',symbol_size=30),
opts.GraphNode(name='德国',symbol_size=20),
opts.GraphNode(name='日本',symbol_size=10),
]
links=[]
for (i,nodeSource) in enumerate(nodes):
for(j,nodetarget) in enumerate(nodes):
if i<j:
#两两之间建立链接
links.append(opts.GraphLink(source=nodeSource.get("name"),
target=nodetarget.get("name")))
f=(
Graph()
.add('',
nodes,
links,
#辐射状的网络
layout='circular',
is_rotate_label=True,
linestyle_opts=opts.LineStyleOpts(
#设置线的颜色和发出的结点的颜色相同
#color=nodeSource,
color='blue',
curve=0.2
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='辐射状的网络图'
)
)
.render('/Users/Desktop/net1.html')
)
三十、3D条形图
#3D条形图
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#需要是一个三维的元组
#x,y分别是一天当中的每一个小时和一周七天
#randint的取值范围是左闭右也闭的区间
data=[(x,y,random.randint(0,10))
for x in range(24)
for y in range(7)]
f=(
Bar3D()
.add('',
data,
#X轴的配置
xaxis3d_opts=opts.Axis3DOpts(
#指定相关的刻度
Faker.clock,
#这是一个分类
type_='category',
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D条形图-基本',
)
)
.render('/Users/Desktop/3Dplot.html')
)
根据柱子的高度设置不同的颜色
#3D条形图
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
#需要是一个三维的元组
#x,y分别是一天当中的每一个小时和一周七天
#randint的取值范围是左闭右也闭的区间
data=[(x,y,random.randint(0,10))
for x in range(24)
for y in range(7)]
f=(
Bar3D()
.add('',
data,
#X轴的配置
xaxis3d_opts=opts.Axis3DOpts(
#指定相关的刻度
Faker.clock,
#这是一个分类
type_='category',
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D条形图-基本',
),
visualmap_opts=opts.VisualMapOpts(
max_=10,
)
)
.render('/Users/Desktop/3Dplot.html')
)
三十一、3D条形图-堆叠
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
def getData():
data = []
for x in range(10):
for y in range(10):
z=random.randint(0,5)
data.append([x,y,z])
return data
x = y =list(range(10))
b=Bar3D()
for _ in range(3):
b.add('',
getData(),
#分别指定三个坐标轴的刻度和类型
xaxis3d_opts=opts.Axis3DOpts(x,type_='value'),
yaxis3d_opts=opts.Axis3DOpts(y,type_='value'),
zaxis3d_opts=opts.Axis3DOpts(type_='value'),
)
#设置是否是堆叠的
b.set_series_opts(stack='stack')
b.set_global_opts(
title_opts=opts.TitleOpts(
title="3D条形图-堆叠",
pos_left='center',
)
)
b.render('/Users/Desktop/3Dplo2t.html')
添加光照模型,让我们的3D堆叠图的每一个面接受光照
from pyecharts.charts import Bar3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import random
def getData():
data = []
for x in range(10):
for y in range(10):
z=random.randint(0,5)
data.append([x,y,z])
return data
x = y =list(range(10))
b=Bar3D()
for _ in range(3):
b.add('',
getData(),
#分别指定三个坐标轴的刻度和类型
xaxis3d_opts=opts.Axis3DOpts(x,type_='value'),
yaxis3d_opts=opts.Axis3DOpts(y,type_='value'),
zaxis3d_opts=opts.Axis3DOpts(type_='value'),
#设置成为光照模型
shading='lambert',
)
#设置是否是堆叠的
b.set_series_opts(stack='stack')
b.set_global_opts(
title_opts=opts.TitleOpts(
title="3D条形图-堆叠",
pos_left='center',
)
)
b.render('/Users/Desktop/3Dplo2t.html')
三十二、3D折线图
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
)
)
.render('/Users/Desktop/3Dplot3.html')
)
设置相关的视觉映射
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
),
visualmap_opts=opts.VisualMapOpts(
max_=30,
)
)
.render('/Users/Desktop/3Dplot3.html')
)
使用Faker中的配色方案
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
),
visualmap_opts=opts.VisualMapOpts(
max_=30,
range_color=Faker.visual_color,
)
)
.render('/Users/Desktop/3Dplot3.html')
)
让这个弹簧真正地旋转起来
from pyecharts.charts import Line3D
from pyecharts import options as opts
from pyecharts.faker import Faker
import math
data=[]
for t in range(25000):
t=t/1000
x=(1+0.25*math.cos(75*t))*math.cos(t)
y=(1+0.25*math.cos(75*t))*math.sin(t)
z=(t+0.2*math.sin(75+t))
data.append([x,y,z])
f=(
Line3D()
.add(
#系列名称是空的
'',
data,
xaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
yaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value',
),
grid3d_opts=opts.Grid3DOpts(
width=100,
depth=100,
is_rotate=True,
rotate_speed=150,
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D折线图-旋转的弹簧',
),
visualmap_opts=opts.VisualMapOpts(
max_=30,
range_color=Faker.visual_color,
)
)
.render('/Users/Desktop/3Dplot3.html')
)
三十三、3D散点图
from pyecharts.charts import Scatter3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
data=[(x,y,random.randint(0,10))for x in range(24) for y in range(7)]
f=(
Scatter3D()
.add('',
data,
xaxis3d_opts=opts.Axis3DOpts(
Faker.clock,
type_='category'
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D散点图',
pos_left='center'
)
).render('/Users/Desktop/net1.html')
)
添加视觉效果
from pyecharts.charts import Scatter3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
data=[(x,y,random.randint(0,10))for x in range(24) for y in range(7)]
f=(
Scatter3D()
.add('',
data,
xaxis3d_opts=opts.Axis3DOpts(
Faker.clock,
type_='category'
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D散点图',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
max_=10,
)
).render('/Users/Desktop/net1.html')
)
根据大小显示
from pyecharts.charts import Scatter3D
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
data=[(x,y,random.randint(0,10))for x in range(24) for y in range(7)]
f=(
Scatter3D()
.add('',
data,
xaxis3d_opts=opts.Axis3DOpts(
Faker.clock,
type_='category'
),
yaxis3d_opts=opts.Axis3DOpts(
Faker.week,
type_='category'
),
zaxis3d_opts=opts.Axis3DOpts(
type_='value'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='3D散点图',
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(
max_=10,
type_='size'
)
).render('/Users/Desktop/net1.html')
)
三十四、双轴坐标图
from pyecharts.charts import Line,Bar
import pyecharts.options as opts
from pyecharts.faker import Faker
import webbrowser as wb
import random
import pandas as pd
df=pd.read_csv(r'/Users/stocks.csv',header=None)
df['Date']=pd.to_datetime(df[0])
df[6]=df[6]/10000
data=df[(df['Date']>=pd.Timestamp('2022-12-01'))
& (df['Date']<=pd.Timestamp('2022-12-15'))]
x=list(data[0])[::-1]
y1=list(data[5])[::-1]
y2=list(data[6])[::-1]
l=(
Line(init_opts=opts.InitOpts(theme='light'))
.add_xaxis(x)
.add_yaxis('股票价格',y1)
#扩展坐标轴
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(
#设置标签的格式
formatter='{value}万元'
)
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='股票价格与交易额分析'
),
xaxis_opts=opts.AxisOpts(
#旋转的角度
axislabel_opts=opts.LabelOpts(
rotate=30,
),
),
yaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(
formatter='{value}元'
),
min_=29000,
max_=30000
)
)
)
b = (
Bar()
.add_xaxis(x)
.add_yaxis('交易额', y2, yaxis_index=1)
)
l.overlap(b)
l.render('/Users/Desktop/double.html')
三十五、顺序多图
from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x=Faker.provinces
y=Faker.values()
data=list(zip(x,y))
b = (
Bar(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
l = (
Line(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
p = (
Pie(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data)
)
m = (
Map(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data, maptype='china')
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=min(y),
max_=max(y)
)
)
)
f = (
Page(layout=Page.DraggablePageLayout) # Page.SimplePageLayout
.add(b, l, p, m)
.render('/Users/Desktop/page.html')
)
from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x=Faker.provinces
y=Faker.values()
data=list(zip(x,y))
b = (
Bar(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
l = (
Line(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
p = (
Pie(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data)
)
m = (
Map(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data, maptype='china')
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=min(y),
max_=max(y)
)
)
)
f = (
Page(layout=Page.SimplePageLayout) # Page.SimplePageLayout
.add(b, l, p, m)
.render('/Users/Desktop/page2.html')
)
可拖动每一张子图的版本
from pyecharts.charts import Bar, Line, Pie, Map, Page
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x=Faker.provinces
y=Faker.values()
data=list(zip(x,y))
b = (
Bar(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
l = (
Line(init_opts=opts.InitOpts(width='500px', height='400px'))
.add_xaxis(x)
.add_yaxis('', y)
)
p = (
Pie(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data)
)
m = (
Map(init_opts=opts.InitOpts(width='500px', height='400px'))
.add('', data, maptype='china')
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=min(y),
max_=max(y)
)
)
)
f = (
Page(layout=Page.DraggablePageLayout) # Page.SimplePageLayout
.add(b, l, p, m)
.render('/Users/Desktop/page3.html')
)
三十六、时间线图
from pyecharts.charts import Bar,Timeline
from pyecharts.faker import Faker
import pyecharts.options as opts
import webbrowser as wb
x = Faker.provinces
y0 = Faker.values()
y1 = Faker.values()
tl = Timeline()
tl.add_schema(play_interval=200)
for i in range(1972, 2022):
y = [round(a*(2021-i)/49+b*(i-1972)/49,1)
for (a, b) in zip(y0, y1)]
z = sorted(zip(x, y), key=lambda a: a[1])
(xi, yi) = zip(*z)
bar = (
Bar()
.add_xaxis(xi)
.add_yaxis('',
yi,
color='blue',
label_opts=opts.LabelOpts(
position='right'
)
)
#转置坐标轴,让顶部是大的,底部是小的。
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(
title=f'{i}年',
pos_left='center'
)
)
)
tl.add(bar, f'{i}')
tl.render('/Users/Desktop/develop.html')