pyecharts是基于百度开源图表组件echarts的python封装。支持所有常用的图表组件,和matlibplot系的图表库不同的是:pyecharts支持动态交互展示,这一点在查看复杂数据图表时特别的有用。

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第1张

本文转载自微信公众号「Python中文社区」,作者wedo实验君。转载本文请联系Python中文社区公众号。

1. Pyecharts简介

pyecharts是基于百度开源图表组件echarts的python封装。支持所有常用的图表组件,和matlibplot系的图表库不同的是:pyecharts支持动态交互展示,这一点在查看复杂数据图表时特别的有用。

  1. pipinstallpyecharts

2.pyecharts简单使用

pyecharts支持常用的基本图形展示,条形图、折线图、饼图、散点图、热力图、漏斗图、雷达图、箱型图、地图等,还能支持仪表盘,树形图的展示。

  1. frompyecharts.chartsimportBar,Line
  2. frompyechartsimportoptionsasopts
  3. frompyecharts.globalsimportThemeType
  4. line=(
  5. Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT,width='1000px',height='300px'))
  6. .add_xaxis(["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"])
  7. .add_yaxis("商家A",[5,20,36,10,75,90])
  8. .add_yaxis("商家B",[15,6,45,20,35,66])
  9. .set_global_opts(title_opts=opts.TitleOpts(title="主标题",subtitle="副标题"),
  10. datazoom_opts=opts.DataZoomOpts(is_show=True))
  11. .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
  12. )
  13. line.render('test.html')
  14. line.render_notebook()

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第2张

从上面简单事例可知,pyecharts的使用包括:

  • 图标类型(Line)本身的初始化配置,如主题,大小
  • 加载数据:如加载x轴数据,加载y轴数据(可以多个)
  • 设置全局配置,如标题,区域缩放datazoom,工具箱等
  • 设置系列配置项,如标签,线条,刻度文本展示等
  • 图标显示:render保存成html文件,如果是jupyter notebook则直接通过render_notebook展示在notebook中

3.常用配置使用

在pyecharts中,关于图表外观显示等操作都是在相应的option里配置,包括坐标轴,图例,数据标签,网格线,图表样式/颜色,不同系列等等。

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第3张

  • InitOpts:各个图表类型初始配置
  • set_global_opts:全局外观配置
  • set_series_opts:系列配置

为了方便大家和自己,下面给出一个常用的组合,通常可视化足够用了,快收藏。

  • InitOpts:主题,长宽,动画效果
  • DataZoomOpts:区域收缩,这个对于数据特别多,如一天的时间序列数据,特别有用,可以拖动查看全局和局部的数据(可以设置是否显式显式还是可拖动type_="inside")
  • 标题配置TitleOpts:说明这个图表说明的是什么,必备的吧
  • 图例配置LegendOpts:说明图表中的不同数据项(这个图例是可以点击的,可以单独查看某个图例的数据,很有用)
  • 提示框配置TooltipOpts:显示图例具体某个点的数据
  • x轴和y轴坐标轴标题说明AxisOpts
  • 坐标刻度调整:特别适用于刻度说明比较多,可以显示角度变换等
  • markpoint/markline: 对图表的特别标记,用于重点说明部分和标注区分线
  1. frompyecharts.chartsimportBar,Line
  2. frompyechartsimportoptionsasopts
  3. frompyecharts.globalsimportThemeType
  4. bar=(
  5. Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT,
  6. width='1000px',
  7. height='300px',
  8. animation_opts=opts.AnimationOpts(animation_delay=1000,animation_easing="elasticOut")
  9. )
  10. )
  11. .add_xaxis(["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"])
  12. .add_yaxis("商家A",[5,20,36,10,75,90])
  13. .add_yaxis("商家B",[15,6,45,20,35,66])
  14. .set_global_opts(title_opts=opts.TitleOpts(title="主标题",subtitle="副标题"),
  15. toolbox_opts=opts.ToolboxOpts(is_show=False),
  16. #datazoom_opts=opts.DataZoomOpts(is_show=True)
  17. datazoom_opts=[opts.DataZoomOpts(),opts.DataZoomOpts(type_="inside")],
  18. legend_opts=opts.LegendOpts(type_="scroll",pos_left="50%",orient="vertical"),
  19. xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15),name="我是X轴"),
  20. yaxis_opts=opts.AxisOpts(name="我是Y轴",axislabel_opts=opts.LabelOpts(formatter="{value}/月")),
  21. tooltip_opts=opts.TooltipOpts(trigger="axis",axis_pointer_type="cross"),
  22. )
  23. .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
  24. markpoint_opts=opts.MarkPointOpts(
  25. data=[
  26. opts.MarkPointItem(type_="max",name="最大值"),
  27. opts.MarkPointItem(type_="min",name="最小值"),
  28. opts.MarkPointItem(type_="average",name="平均值"),
  29. ]
  30. ),
  31. )
  32. )
  33. #line.render('test.html')
  34. bar.render_notebook()

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第4张

4.常用组合图表使用

常用组合图表有:

  • 不同图表类型组合如柱状图和折线图组合在一张图中(双y轴),主要的看同一视角不同指标的差异和关联;pyecharts中是通过overlap实现
  1. frompyechartsimportoptionsasopts
  2. frompyecharts.chartsimportBar,Line
  3. frompyecharts.fakerimportFaker
  4. v1=[2.0,4.9,7.0,23.2,25.6,76.7,135.6,162.2,32.6,20.0,6.4,3.3]
  5. v2=[2.6,5.9,9.0,26.4,28.7,70.7,175.6,182.2,48.7,18.8,6.0,2.3]
  6. v3=[2.0,2.2,3.3,4.5,6.3,10.2,20.3,23.4,23.0,16.5,12.0,6.2]
  7. bar=(
  8. Bar(init_opts=opts.InitOpts(width="680px",height="300px"))
  9. .add_xaxis(Faker.months)
  10. .add_yaxis("蒸发量",v1)
  11. .add_yaxis("降水量",v2)
  12. .extend_axis(
  13. yaxis=opts.AxisOpts(
  14. axislabel_opts=opts.LabelOpts(formatter="{value}°C"),interval=5
  15. )
  16. )
  17. .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  18. .set_global_opts(
  19. title_opts=opts.TitleOpts(title="Overlap-bar+line"),
  20. yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}ml")),
  21. tooltip_opts=opts.TooltipOpts(trigger="axis",axis_pointer_type="cross"),
  22. )
  23. )
  24. line=Line().add_xaxis(Faker.months).add_yaxis("平均温度",v3,yaxis_index=1)
  25. bar.overlap(line)
  26. bar.render_notebook()

从实现上,

  • .extend_axis增加一个纵坐标
  • 增加的折线图设置轴坐标时设置yaxis_index索引和前面的纵坐标对应
  • 然后两张叠加overlap bar.overlap(line)

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第5张

  • 多图标以网格(GRID)方式组合,主要是对比;pyecharts中是通过grid组件实现
  1. frompyechartsimportoptionsasopts
  2. frompyecharts.chartsimportBar,Grid,Line
  3. frompyecharts.fakerimportFaker
  4. bar=(
  5. Bar()
  6. .add_xaxis(Faker.choose())
  7. .add_yaxis("商家A",Faker.values())
  8. .add_yaxis("商家B",Faker.values())
  9. .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
  10. )
  11. line=(
  12. Line()
  13. .add_xaxis(Faker.choose())
  14. .add_yaxis("商家A",Faker.values())
  15. .add_yaxis("商家B",Faker.values())
  16. .set_global_opts(
  17. title_opts=opts.TitleOpts(title="Grid-Line",pos_top="48%"),
  18. legend_opts=opts.LegendOpts(pos_top="48%"),
  19. )
  20. )
  21. grid=(
  22. Grid(init_opts=opts.InitOpts(width="680px",height="500px"))
  23. .add(bar,grid_opts=opts.GridOpts(pos_bottom="60%"))
  24. .add(line,grid_opts=opts.GridOpts(pos_top="60%"))
  25. )
  26. grid.render_notebook()

从实现看

  • 主要通过Grid把各种图形放入其中
  • 各个图表的位置通过GridOpts来设置,上下左右的位置
  • 需要注意的是:grid中图表的title和图例需要根据所处位置来指定相对的位置(这个有点麻烦,多调调)

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第6张

5.地图使用

地图可用在展示数据在地理位置上的分布情况,也是很常见的可视化的展示组件。pyecharts中是通过Map类来实现的。具体细节需要注意:

  • map支持不同的maptype,如中国地图china(省级) china-cities(市级),世界地图world,还有中国各省市地图以及世界各国国家地图,参看github pyecharts/datasets/map_filename.json
  • map的数据格式是(地理位置, value), 如[['广东', 76],['北京', 58]]
  • 可以通过visualmap_opts查看着重点
  1. frompyechartsimportoptionsasopts
  2. frompyecharts.chartsimportMap
  3. frompyecharts.fakerimportFaker
  4. c1=(
  5. Map()
  6. .add("商家A",[list(z)forzinzip(Faker.guangdong_city,Faker.values())],"广东")
  7. .set_global_opts(
  8. title_opts=opts.TitleOpts(title="Map-广东地图"),visualmap_opts=opts.VisualMapOpts()
  9. )
  10. )
  11. c2=(
  12. Map()
  13. .add("商家A",[list(z)forzinzip(Faker.provinces,Faker.values())],"china")
  14. .set_global_opts(
  15. title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"),
  16. visualmap_opts=opts.VisualMapOpts(max_=200),
  17. )
  18. )
  19. #c1.render_notebook()
  20. c2.render_notebook()

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第7张

6.特色图表使用

在学习pyecharts时,看到一些比较有意思的(动态展示)组件,如随着时间动态展示图表数据的变化。这里做下介绍

  • Timeline:时间线轮播多图 先声明一个Timeline, 按照展示的时间顺序,将图表add到Timeline上; 可以通过播放按钮循环按照时间顺序展示图表。
  1. frompyechartsimportoptionsasopts
  2. frompyecharts.chartsimportPie,Timeline
  3. frompyecharts.fakerimportFaker
  4. attr=Faker.choose()
  5. tl=Timeline()
  6. foriinrange(2015,2020):
  7. pie=(
  8. Pie()
  9. .add(
  10. "商家A",
  11. [list(z)forzinzip(attr,Faker.values())],
  12. rosetype="radius",
  13. radius=["30%","55%"],
  14. )
  15. .set_global_opts(title_opts=opts.TitleOpts("某商店{}年营业额".format(i)))
  16. )
  17. tl.add(pie,"{}年".format(i))
  18. tl.render_notebook()

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第8张

  • 仪表盘
  1. frompyechartsimportoptionsasopts
  2. frompyecharts.chartsimportGauge
  3. c=(
  4. Gauge()
  5. .add("",[("完成率",30.6)],radius="70%",
  6. axisline_opts=opts.AxisLineOpts(
  7. linestyle_opts=opts.LineStyleOpts(
  8. color=[(0.3,"#67e0e3"),(0.7,"#37a2da"),(1,"#fd666d")],width=30)
  9. ),
  10. title_label_opts=opts.LabelOpts(
  11. font_size=20,color="blue",font_family="MicrosoftYaHei"
  12. ),
  13. )
  14. .set_global_opts(title_opts=opts.TitleOpts(title="Gauge-基本示例"),legend_opts=opts.LegendOpts(is_show=False),)
  15. )
  16. c.render_notebook()

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第9张

7.其他图表一览

从上面的实例看,已经展示地图,条形图,折线图,饼图,仪表盘。这里展示下pyecharts提供的更多的图表,

  • 雷达图 Radar

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第10张

  • 树形图 Tree

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第11张

  • 热力图 heatMap

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第12张

  • 日历图 Calendar

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第13张

  • 散点图 Scatter

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第14张

  • 3D图 Bar3D

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第15张

  • 箱型图 Boxplot

 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图) 图表 组件 第16张

8.总结

本文介绍的基于echarts的python动态图表展示组件pyecharts,除了提供众多常用的图表外,最重要的是支持动态操作数据。总结如下:

  • pyecharts所有的图像属性设置都通过opts来设置,有图表初始属性/全局属性/系列属性
  • 本文提供常用的配置,足够用了,拿走不谢,见常用配置使用
  • pyecharts 支持多图表组合,如折线图和条形图 overlap, 多个图表grid展示
  • pyecharts好用的map,可以展示中国省市,世界各国地图,请按照[位置,value]准备数据
  • Timeline可以让你的图表按照时间轮播
  • 更多图表参见参考资料

9.参考资料

https://pyecharts.org/#/zh-cn/quickstart

转载请说明出处
知优网 » 5 分钟完全解读 Pyecharts 动态图表(pyecharts动态折线图)

发表评论

您需要后才能发表评论