python第二十一课数据可视化使用pyecharts绘制图表2.docx
《python第二十一课数据可视化使用pyecharts绘制图表2.docx》由会员分享,可在线阅读,更多相关《python第二十一课数据可视化使用pyecharts绘制图表2.docx(18页珍藏版)》请在冰豆网上搜索。
python第二十一课数据可视化使用pyecharts绘制图表2
一、使用pyecharts绘制图表
1、概述
进行web绘图,使用XX的echarts组件生成网页显示的图表。
使用javascript在网页中呈现图表要显示的数据。
2、pyecharts使用python语言调用XX的图形组件库进行web图形的绘制。
3、最终生成的文件都是网页文件,使用浏览器打开就能查看。
二、pyecharts的使用
1、安装pyecharts组件
pipinstallpyechrats
2、pyecharts常用的方法
(1)add(...)方法,用于加载要绘制的图表数据和配置。
(2)show_config();打印配置项信息
(3)render(“xxx.html”):
用于绘制生成html文件,当未指定要绘制的文件名称,默认render.html
3、绘制图表的基本步骤
(1)初始化图表类型
Xxx=图表类型()
例如,绘制柱图
mybar=Bar()
(2)添加配置项
xxx.add(.....)
(3)生成html文件
xxx.render(“xxx.html”)
三、pyecharts常用图的绘制
1、柱状图的绘制(使用pyecharts0.5.11版本)
frompyechartsimportBar
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnums=[10,20,40,20,5,10]
mybar=Bar("商品销售图","商品季度销售统计")#第一个参数是主标题,第二个参数是副标题
mybar.add('商品信息',pnames,pnums)
mybar.show_config()
mybar.render("product_bar.html")
使用pyecharts1.9版本呈现柱状对比图
1、安装pyecharts1.9版本
(2)示例如下
frompyecharts.chartsimportBar#适用于pyecharts1.9版本
frompyechartsimportoptionsasopts
#创建柱状图对象
bar=Bar()
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnum1=[10,20,40,20,5,10]
pnum2=[15,21,50,45,10,20]
#在x轴设置商品名称
bar.add_xaxis(pnames)
#在y轴设置商品的销售数量
bar.add_yaxis("淘宝店铺",pnum1)
bar.add_yaxis("京东商铺",pnum2)
#设置全局的标题信息
bar.set_global_opts(title_opts=opts.TitleOpts(title="商品销售数量",subtitle="淘宝和京东的销售对比图"),toolbox_opts=opts.ToolboxOpts(is_show=True))
#设置商品标题显示的位置,在顶部显示
bar.set_series_opts(label_opts=opts.LabelOpts(position="top"))
#生成html文档
bar.render("product2.html")
轴交换的效果
frompyecharts.chartsimportBar#适用于pyecharts1.9版本
frompyechartsimportoptionsasopts
#创建柱状图对象
bar=Bar()
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnum1=[10,20,40,20,5,10]
pnum2=[15,21,50,45,10,20]
#在x轴设置商品名称
bar.add_xaxis(pnames)
#在y轴设置商品的销售数量
bar.add_yaxis("淘宝店铺",pnum1)
bar.add_yaxis("京东商铺",pnum2)
#设置全局的标题信息
bar.set_global_opts(title_opts=opts.TitleOpts(title="商品销售数量",subtitle="淘宝和京东的销售对比图"),toolbox_opts=opts.ToolboxOpts(is_show=True))
#设置商品标题显示的位置,在顶部显示
bar.set_series_opts(label_opts=opts.LabelOpts(position="right"))
bar.reversal_axis()#坐标旋转90°
#生成html文档
bar.render("product2.html")
2、使用pyecharts1.9版本生成饼图效果
frompyecharts.chartsimportPie#引入饼图组件,适用于pyecharts1.9版本
frompyechartsimportoptionsasopts
#定义集合数据
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnums=[10,20,40,20,5,10]
#创建饼图对象
pie=Pie()
#添加饼图数据
pie.add("",[list(z)forzinzip(pnames,pnums)])
#设置全局的标题信息
pie.set_global_opts(title_opts=opts.TitleOpts(title="商品销售数量",subtitle="数量图例"),toolbox_opts=opts.ToolboxOpts(is_show=True))
#设置商品标题显示的位置,在顶部显示
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:
{pie}"))
pie.render("product_pie.html")
环形图
frompyecharts.chartsimportPie#引入饼图组件,适用于pyecharts1.9版本
frompyechartsimportoptionsasopts
#定义集合数据
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnums=[10,20,40,20,5,10]
#创建饼图对象
pie=Pie()
#添加环形图数据
pie.add("",[list(z)forzinzip(pnames,pnums)],radius=["40%","75%"])
#设置全局的标题信息
pie.set_global_opts(title_opts=opts.TitleOpts(title="商品销售数量"))
#设置商品标题显示的位置,在顶部显示
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:
{pie}"))
pie.render("product_pie1.html")
绘制玫瑰图
frompyecharts.chartsimportPie#引入饼图组件,适用于pyecharts1.9版本
frompyechartsimportoptionsasopts
#定义集合数据
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnums=[10,20,40,20,5,10]
#创建饼图对象
pie=Pie()
#添加环形图数据
#pie.add("",[list(z)forzinzip(pnames,pnums)],radius=["40%","75%"])
#绘制玫瑰图
pie.add("",[list(z)forzinzip(pnames,pnums)],radius=["40%","75%"],rosetype="area")
#设置全局的标题信息
pie.set_global_opts(title_opts=opts.TitleOpts(title="商品销售数量"))
#设置商品标题显示的位置,在顶部显示
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:
{pie}"))
pie.render("product_pie1.html")
散点图
frompyecharts.chartsimportScatter
frompyechartsimportoptionsasopts
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnums1=[10,20,40,20,5,10]#京东的商品销售数据
pnums2=[30,10,20,50,15,30]#淘宝的商品销售数量
#定义散点图对象
s=Scatter()
#添加x轴坐标的数据
s.add_xaxis(pnames)
#添加y轴的商评数量数据
s.add_yaxis('京东',pnums1)
s.add_yaxis('淘宝',pnums2)
s.set_global_opts(title_opts=opts.TitleOpts(title='散点图'),
toolbox_opts=opts.ToolboxOpts(is_show=True),
legend_opts=opts.LegendOpts(orient='vertical',pos_top='5%',pos_left="2%"))
s.set_series_opts(label_opts=opts.LabelOpts(position='top'))
s.render("sandian.html")
多图绘制
在一个页面呈现多图,需要使用网格对象grid添加绘制的图形
frompyecharts.chartsimportBar,Line,Pie,Grid
frompyechartsimportoptionsasopts
A=["小米","三星","华为","苹果","魅族","VIVO","OPPO"]
CA=[100,125,87,90,78,98,118]
B=["草莓","芒果","葡萄","雪梨","西瓜","柠檬","车厘子"]
CB=[78,95,120,102,88,108,98]
bar=Bar()
bar.add_xaxis(A)
bar.add_yaxis("商家A",CA)
bar.add_yaxis("商家B",CB)
bar.set_global_opts(title_opts=opts.TitleOpts(title="多图绘制"))
bar.render()
line=Line()
line.add_xaxis(B)
line.add_yaxis("商家A",CA)
line.add_yaxis("商家B",CB)
line.set_global_opts(title_opts=opts.TitleOpts(title="2图",pos_top="48%"),
legend_opts=opts.LegendOpts(pos_top="48%"))
line.render()
#绘制饼图
#定义集合数据
pnames=['方便面','饼干','火腿肠','卤蛋','花生米','榨菜']
pnums=[10,20,40,20,5,10]
#创建饼图对象
pie=Pie()
#添加环形图数据
#pie.add("",[list(z)forzinzip(pnames,pnums)],radius=["40%","75%"])
#绘制玫瑰图
pie.add("",[list(z)forzinzip(pnames,pnums)],radius=["40%","75%"],rosetype="area")
#设置全局的标题信息
pie.set_global_opts(title_opts=opts.TitleOpts(title="商品销售数量"))
#设置商品标题显示的位置,在顶部显示
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:
{pie}"))
#===================================================
grid=Grid()#网格视图对象
grid.add(bar,grid_opts=opts.GridOpts(pos_bottom="60%"))#添加柱图,设置位置
grid.add(line,grid_opts=opts.GridOpts(pos_top="60%"))#添加折线图并设置位置
#grid.add(pie,grid_opts=opts.GridOpts(pos_right="10%"))
grid.render("myproduct.html")
雷达图
frompyecharts.chartsimportRadar
frompyechartsimportoptionsasopts#用以设置
radar=Radar()
#由于雷达图传入的数据得为多维数据,所以这里需要做一下处理
#2个系列的5个维度的数据
value1=[[0.79,0.90,0.46,0.57,-0.50]]
value2=[[0.11,0.34,0.31,-0.11,0.21]]
#用于调整雷达各维度的范围大小
c_schema=[{"name":
"O","max":
1,"min":
-1},
{"name":
"C","max":
1,"min":
-1},
{"name":
"E","max":
1,"min":
-1},
{"name":
"A","max":
1,"min":
-1},
{"name":
"N","max":
1,"min":
-1}]
#画图
radar=Radar()#创建雷达图对象
radar.add_schema(schema=c_schema)
radar.add("Alen",value1)
radar.add("Bella",value2)
radar.render("Rader.html")
柱状图和折线图合并图使用pyecharts0.5.11版本
frompyechartsimportBar
frompyechartsimportLine
frompyechartsimportStyle
frompyechartsimportPage
frompyechartsimportOverlap
defcreate_charts():
page=Page()
x=['{}年'.format(i)foriinrange(1,12)]
y=[3,5,3,5,3,4,5,3,5,2,4]
y1=[1,2,3,4,5,6,7,8,9,10,11]
style=Style(height=600,width=1400)
bar=Bar('柱形图',**style.init_style,background_color=['pink'])
line=Line()
line.add('',x,y,effect_scale=8)
line.add('',x,y1,effect_scale=10)
bar.add('商家A',x,y,mark_line=['average'],mark_point=['min','max'])
bar.add('商家B',x,y1,mark_line=['average'],mark_point=['min','max'],is_legend_show=True)
overlap=Overlap(height=450,width=1200)
overlap.add(bar)
overlap.add(line)
page.add(overlap)
returnpage
create_charts().render('1.html')
词云图
frompyechartsimportWordCloud#适用于pyecharts0.5.11版本
name=['SamSClub','Macys','AmySchumer','JurassicWorld','CharterCommunications','ChickFilA','PlanetFitness','PitchPerfect','Express','Home','JohnnyDepp','LenaDunham','LewisHamilton','KXAN','MaryEllenMark','FarrahAbraham','RitaOra','SerenaWilliams','NCAAbaseballtournament','PointBreak']
value=[10000,6181,4386,4055,2467,2244,1898,1484,1112,965,847,582,555,550,462,366,360,282,273,265]
wordcloud=WordCloud(width=1300,height=620)
wordcloud.add("",name,value,word_size_range=[20,100])
wordcloud.show_config()
wordcloud.render("wordcloud.html")
折线图-面积图示例
frompyechartsimportLine
attr=["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
v1=[5,20,36,10,10,100]
v2=[55,60,16,20,15,80]
line=Line("折线图-面积图示例")
line.add("商家A",attr,v1,is_fill=True,line_opacity=0.2,area_opacity=0.4,symbol=None)
line.add("商家B",attr,v2,is_fill=True,area_color='#000',area_opacity=0.3,is_smooth=True)
line.show_config()
line.render("linearea.html")
3d柱状图
frompyechartsimportBar3D
bar3d=Bar3D("3D柱状图示例",width=1200,height=600)
x_axis=[
"12a","1a","2a","3a","4a","5a","6a","7a","8a","9a","10a","11a",
"12p","1p","2p","3p","4p","5p","6p","7p","8p","9p","10p","11p"
]
y_axis=[
"Saturday","Friday","Thursday","Wednesday","Tuesday","Monday","Sunday"
]
data=[
[0,0,5],[0,1,1],[0,2,0],[0,3,0],[0,4,0],[0,5,0],
[0,6,0],[0,7,0],[0,8,0],[0,9,0],[0,10,0],[0,11,2],
[0,12,4],[0,13,1],[0,14,1],[0,15,3],[0,16,4],[0,17,6],
[0,18,4],[0,19,4],[0,20,3],[0,21,3],[0,22,2],[0,23,5],
[1,0,7],[1,1,0],[1,2,0],[1,3,0],[1,4,0],[1,5,0],
[1,6,0],[1,7,0],[1,8,0],[1,9,0],[1,10,5],[1,11,2],
[1,12,2],[1,13,6],[1,14,9],[1,15,11],[1,16,6],[1,17,7],
[1,18,8],[1,19,12],[1,20,5],[1,21,5],[1,22,7],[1,23,2],
[2,0,1],[2,1,1],[2,2,0],[2,3,0],[2,4,0],[2,5,0],
[2,6,0],[2,7,0],[2,8,0],[2,9,0],[2,10,3],[2,11,2],
[2,12,1],[2,13,9],[2,14,8],[2,15,10],[2,16,6],[2,17,5],
[2,18,5],[2,19,5],[2,20,7],[2,21,4],[2,22,2],[2,23,4],
[3,0,7],[3,1,3],[3,2,0],[3,3,0],[3,4,0],[3,5,0],
[3,6,0],[3,7,0],[3,8,1],[3,9,0],[3,10,5],[3,11,4],
[3,12,7],[3,13,14],[3,14,13],[3,15,12],[3,16,9],[3,17,5],
[3,18,5],[3,19,10],[3,20,6],[3,21,4],[3,22,4],[3,23,1],
[4,0,1],[4,1,3],[4,2,0],[4,3,0],[4,4,0],[4,5,1],
[4,6,0],[4,7,0],[4,8,0],[4,9,2],[4,10,4],[4,11,4],
[4,12,2],[4,13,4],[4,14,4],[4,15,14],[4,16,12],[4,17,1],
[4,18,8],[4,19,5],[4,20,3],[4,21,7],[4,22,3],[4