前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:刘早起

 

开始使用

基本套路就是先创建一个你需要的空图层,然后使用.set_global_opts修改全局项再用.set_series_opts修改具体的相关配置就可以。当然最好的学习地址一定是官方文档,但是里面介绍的太过复杂了,这里仅以快速上手使用为目标进行几个例子来说明套路。

pyecharts比较好的就是绘制地图,这里以2019-nCov项目中安徽省地图绘制为例。

首先导入需要的包

  1. from pyecharts.charts import Pie ,Grid,Bar,Line
  2. from pyecharts.faker import Faker #数据包from pyecharts.charts import Map,Geo
  3. from pyecharts import options as opts
  4. from pyecharts.globals import ThemeType

 

OK,我现在有一个省份的一组数据,大概长这样

  1. locate =['合肥市', '阜阳市', '亳州市', '安庆市', '马鞍山市', '铜陵市', '六安市', '滁州市', '池州市','蚌埠市','芜湖市','宿州市','宣城市','淮北市','淮南市','黄山市']`
  2. data =['115','105','72','66','30','22','41','11','11','88','27','27','5','22','14','9']

 

这也是接触到的需要绘制地图的数据格式,两个list,一个是地名,一个是每个城市对应的数据,现在执行以下代码就可以得到安徽省的疫情地图。

  1. list1 = [[locate[i],data[i]] for i in range(len(locate))] #首先创建数据
  2. map_1 = Map(init_opts=opts.InitOpts(width="400px", height="460px")) #创建地图,其中括号内可以调整大小,也可以修改主题颜色。
  3. map_1.add("安徽疫情", list1, maptype="安徽") #添加安徽地图
  4. map_1.set_global_opts( #设置全局配置项#title_opts=opts.TitleOpts(title="安徽疫情"), 添加标题
  5. visualmap_opts=opts.VisualMapOpts(max_=120, is_piecewise=True),#最大数据范围 并且使用分段
  6. legend_opts=opts.LegendOpts(is_show=False), #是否显示图例
  7. )
  8. map_1.render_notebook() #直接在notebook中显示# map_1.render('map1.html') 将地图以html形式保存在工作目录下

 

 

 

当然地图还有很多可以自定义的配置项,选择需要的配置项添加到对应的函数中即可。

  1. # 数据项 (坐标点名称,坐标点值)
  2. data_pair: Sequence,
  3. # 地图类型,具体参考 pyecharts.datasets.map_filenames.json 文件
  4. maptype: str = "china",
  5. # 是否选中图例
  6. is_selected: bool = True,
  7. # 是否开启鼠标缩放和平移漫游。
  8. is_roam: bool = True,
  9. # 当前视角的中心点,用经纬度表示
  10. center: Optional[Sequence] = None,
  11. # 当前视角的缩放比例。
  12. zoom: Optional[Numeric] = 1,
  13. # 自定义地区的名称映射
  14. name_map: Optional[dict] = None,
  15. # 标记图形形状
  16. symbol: Optional[str] = None,
  17. # 是否显示标记图形
  18. is_map_symbol_show: bool = True,
  19. # 标签配置项,参考 `series_options.LabelOpts`
  20. label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
  21. # 提示框组件配置项,参考 `series_options.TooltipOpts`
  22. tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
  23. # 图元样式配置项,参考 `series_options.ItemStyleOpts`
  24. itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
  25. # 高亮标签配置项,参考 `series_options.LabelOpts`
  26. emphasis_label_opts: Union[opts.LabelOpts, dict, None] = None,
  27. # 高亮图元样式配置项,参考 `series_options.ItemStyleOpts`
  28. emphasis_itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,

 

继续使用地图里的数据绘制饼图,现在想看安徽各地区疫情分布比,就可以考虑使用饼图(玫瑰图)。详细代码

  1. map_2 = (
  2. Pie(init_opts=opts.InitOpts(width="600px", height="500px")) 创建一个饼图
  3. .add(
  4. "", #图名
  5. [[locate[i],data[i]] for i in range(len(locate))], #添加数据
  6. radius=["40%", "75%"], # 调整半径
  7. )
  8. .set_global_opts(
  9. legend_opts=opts.LegendOpts(
  10. orient="vertical", pos_top="10%", pos_left="88%"#图例设置
  11. ),
  12. )
  13. .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) #设置标签
  14. )
  15. map_2.render_notebook() #直接在notebook中显示#map_2.render('map2.html') #保存到本地柱状图

 

 

 

 

demo

  1. c = (
  2. Bar()
  3. .add_xaxis(Faker.choose())
  4. .add_yaxis("商家A", Faker.values()) #数据配置
  5. .add_yaxis("商家B", Faker.values()) #数据配置
  6. .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) #全局配置标题
  7. )
  8. c.render_notebook()通过添加配置项可以调整标题、图例、粗细、位置、背景图等等

 

 

 

  1. # 系列数据
  2. yaxis_data: Sequence[Numeric, opts.BarItem, dict],
  3. # 是否选中图例
  4. is_selected: bool = True,
  5. # 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
  6. xaxis_index: Optional[Numeric] = None,
  7. # 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
  8. yaxis_index: Optional[Numeric] = None,
  9. # 系列 label 颜色
  10. color: Optional[str] = None,
  11. # 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
  12. stack: Optional[str] = None,
  13. # 同一系列的柱间距离,默认为类目间距的 20%,可设固定值
  14. category_gap: Union[Numeric, str] = "20%",
  15. # 不同系列的柱间距离,为百分比(如 '30%',表示柱子宽度的 30%)。# 如果想要两个系列的柱子重叠,可以设置 gap 为 '-100%'。这在用柱子做背景的时候有用。
  16. gap: Optional[str] = None,
  17. # 标签配置项,参考 `series_options.LabelOpts`
  18. label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
  19. # 标记点配置项,参考 `series_options.MarkPointOpts`
  20. markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,
  21. # 标记线配置项,参考 `series_options.MarkLineOpts`
  22. markline_opts: Union[opts.MarkLineOpts, dict, None] = None,
  23. # 提示框组件配置项,参考 `series_options.TooltipOpts`
  24. tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
  25. # 图元样式配置项,参考 `series_options.ItemStyleOpts`
  26. itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,

 

如果想要同时叠加绘制图形可以采用参考以下方法

  1. def two_pic() -> Bar:
  2. x = Faker.choose() #选择数据
  3. bar = ( #先绘制bar
  4. Bar()
  5. .add_xaxis(x)
  6. .add_yaxis("商家A", Faker.values())
  7. .add_yaxis("商家B", Faker.values())
  8. .set_global_opts(title_opts=opts.TitleOpts(title="Overlap-line+scatter"))
  9. )
  10. line = ( #再添加line
  11. Line()
  12. .add_xaxis(x)
  13. .add_yaxis("商家A", Faker.values())
  14. .add_yaxis("商家B", Faker.values())
  15. )
  16. bar.overlap(line)
  17. return bar
  18. two_pic().render_notebook()总结

 

 

 

使用新版pyecharts并不难,基本套路都和上面一样,只要先学会画图套路,再多读官方文档就可以。

版权声明:本文为zwhy8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zwhy8/p/13305167.html