原文链接

Pyecharts数据可视化

@Author : Small-J

官方中文网址 : https://pyecharts.org/#/zh-cn/intro

Pyecharts 介绍

Echarts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的矢量图型库,提供直观,交互丰富,可高度个性化定制的数据可视化图片

  1. Echart : 百度开源可视化工具
  2. pyechart : 国内大神实现Python调用echarts库

特性

  • 简介的API设计,顺畅流畅,支持链式调用
  • 概括了30+种常用图表,应有尽有
  • 支持主流Notebook环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至Flask 、Django 等主流Web框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达400+地图文件以及原生的百度地图,为地理数据可视化提供有力的支持

pyecharts 安装

  • 安装pyecharts :pip install pyecharts -i https://pypi.douban.com.simple/
  • 全球国家地图 : pip install echarts-countries-pypkg -i https://pypi.douban.com/simple/
  • 中国省级地图 :pip install echats-china-provinces-pypkg -i https://pypi.douban.com/simple/
  • 中国市级地图 : pip install echarts-china-cities-pypkg -i https://pypi.douban.com/simple/

检查版本的安装

  1. import pyecharts
  2. pyecharts.__version__

绘制Pyecharts的三种方式

Pyecharts绘制图表:生成HTML

  • 导入第三方绘制直方图的库 :from pyecharts.chart import Bar
  • 在Pyecharts中一切皆全局配置项 : from pyecharts import options as opts
  1. x = ['Python数据可视化库 seaborn', 'Python数据可视化库 plotly', 'Python数据可视化 matplotlib']
  2. y1 = [1140, 550, 270]
  3. y2 = [570, 1340, 1370]
  4. bar = Bar() # 实例化对象
  5. # xaxis_data : 要添加的X轴数据
  6. bar.add_xaxis(xaxis_data=x) # x轴坐标的数据
  7. # yaxis_data : 添加的x轴数据,series_name : 图例的名字
  8. bar.add_yaxis(yaxis_data=y1, series_name='平台-A')
  9. bar.add_yaxis(yaxis_data=y2, series_name='平台-B')
  10. # 设置bar的全局配置项
  11. bar.set_global_opts(title_opts=opts.TitleOpts(title='Small-J绘制的平台'))
  12. bar.render(path='./HTML/first_bar.html') # 绘制图形。path为指定路径,生成HTML文件的一个路径

Pyecharts数据可视化 - 图1

在Jupyter notebook 上直接展示

  • render_notebook : 在 jupyter notebook 上直接展示
  • reversal_axis : x轴和y轴坐标轴进行转换
  1. # 绘制直方图 Bar
  2. from pyecharts.charts import Bar
  3. # 使用options,在pyecharts中一切皆options
  4. from pyecharts import options as opts
  5. x = ['Python数据可视化库 seaborn', 'Python数据可视化库 plotly', 'Python数据可视化 matplotlib']
  6. y1 = [1140, 550, 270]
  7. y2 = [570, 1340, 1370]
  8. bar2 = Bar() # 实例化对象
  9. # 设置标题
  10. bar2.set_global_opts(title_opts=opts.TitleOpts(title='Small-J 商家平台'))
  11. bar2.add_xaxis(xaxis_data=x)
  12. bar2.add_yaxis(yaxis_data=y1, series_name='商家-A')
  13. bar2.add_yaxis(yaxis_data=y2, series_name='商家-B')
  14. # 当我们想旋转轴的时候,可以通过reversal_axis参数来进行轴的转换
  15. # x轴和y轴坐标轴的转换
  16. bar2.reversal_axis()
  17. bar2.render_notebook()

Pyecharts数据可视化 - 图2

Pyecharts生成图片

  • 安装软件 : pip install snapshot_selenium -i https://pypi.douban.com/simple
  • 配置环境变量 : 我们需要把我们的chromedriver驱动放到我们PATH环境变量下
  • snapshot : 导入快照
  • make_snapshot : 生成图片保存图形
  1. from snapshot_selenium import snapshot as driver
  2. from pyecharts import options as opts
  3. from pyecharts.charts import Bar
  4. from pyecharts.render import make_snapshot
  5. def bar_chart()->Bar:
  6. x = ['Python数据可视化库 seaborn', 'Python数据可视化库 plotly', 'Python数据可视化 matplotlib']
  7. y1 = [1140, 550, 270]
  8. y2 = [570, 1340, 1370]
  9. c = Bar() # 实例化对象
  10. # 设置标题
  11. c.set_global_opts(title_opts=opts.TitleOpts(title='Small-J 商家平台'))
  12. c.add_xaxis(xaxis_data=x)
  13. c.add_yaxis(yaxis_data=y1, series_name='商家-A')
  14. c.add_yaxis(yaxis_data=y2, series_name='商家-B')
  15. # 当我们想旋转轴的时候,可以通过reversal_axis参数来进行轴的转换
  16. # x轴和y轴鼠标轴的转换
  17. c.reversal_axis()
  18. c.render_notebook()
  19. return c
  20. c = bar_chart()
  21. # c.render_notebook()
  22. make_snapshot(driver,c.render(), 'first_bar.png')

Pyecharts数据可视化 - 图3

全局配置项

使用options配置项,在pyecharts中,一切皆Options

  1. from pyecharts.options as opts

InitOpts 初始化配置项

注意:初始化配置是在该导入的图形进行初始化设置 例如

  • 导入什么类型的绘图,就在什么样的图像进初始化配置
  • width : 图表的宽度显示
  • height : 图表的高度显示
  • theme : 图表的主题选择
  1. # 该导入的是折线图的库
  2. Line(init_opts = opts.InitOpts(width='1500px',height='1000px'))

TitleOpts 标题配置项

  • title : 主标题文本
  • subtitle : 副标题文本
  • pos_left : title组件离容器左侧的距离,参数如下:
  • left : 左侧
  • center: 中间
  • right : 右侧
  • pos_top : title 组件离容器右侧的距离
  1. 对应的图形.set_global_opts(title_opts=opts.TitleOpts(title='Small-J',subtitle='这是副标题', pos_left=None, pos_top=None))

LegendOpts 图例配置项

  • is_show : 是否显示图例组件,默认情况下为True
  • pos_left : 图例组建离容器左侧的距离
  • pos_right : 图例组件离容器右侧的距离
  • pos_top : 图例组件离容器上侧的距离
  • pos_bottom : 图例组件离容器下侧的距离
  1. 对应的图形.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))

TooltipOpts 提示框配置项

  • trigger : 触发类型
  • item : 数据项图形触发,主要在散点图,饼图等无类目轴的图表使用
  • axis : 坐标轴触发,主要在柱状图的,折线图等会使用类目轴的图表中使用
  • axis_pointer_type : 指示器类型
  • line :直线指示器
  • shadow : 阴影指示器
  • cross : 十字准星指示器
  • formatter : 标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行
  • 字符串模板 模板变量有:
  • {a} : 系列名
  • {b} : 数据名
  • {c} : 数据值
  • 示例 : formatter : {b}: {@score}
  1. 对应的图像.set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True, trigger='axis', axis_pointer_type='cross')

ToolboxOpts 工具项配置

  • is_show : 是否显示提示框组件,包括提示框浮层
  • trigger : 触发类型
  • item : 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
  • axis : 坐轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
  • none : 什么都不触发
  1. 对应的图像.set_global_opts(toolbox_opts=opts.ToolboxOpts(is_show=True))

AxisOpts 坐标轴配置项

  • is_show : 是否显示y轴数据
  • is_inverse : 是否反向坐标轴
  • axislabel_opts : 坐标轴标签配置项 继承于LabelOpts
  • opts.LabelOpt
  • rotate : 将对应轴的文字旋转度数
  • name : 坐标轴名称
  • type_ : 坐标轴类型
  • value : 数值轴,适用于连续的数据
  • category : 类名轴,适用于离散的类目数据
  • time : 时间轴
  • min_ : 坐标轴刻度最小值
  • max_ : 坐标轴刻度最大值
  • interval : 强制设置坐标轴分隔间隔
  • axisabel_opts : 坐标轴标签配置项
  1. 对应的图像.set_global_opts(is_show=True, is_inverse=True, axislabel_opts=opts.LabelOpts(rotate=45))

DatazoomOpts 区域缩放配置项

  • is_show : 是否显示组件
  • type_ : 组件类型
  • slider : 下方会有像进度条一样的进度条配置项
  • inside : 点中图表用数据滚轮滑动
  • range_start : 数据窗口范围的起始百分比
  • range_end : 数据窗口范围的结束百分比
  1. 对于的图像.set_global_opts(datazoom_opts=options.DataZoomOpts(type_='slider', range_start=0, range_end=1500, orient='vertical'))

系列配置项

LabelOpts 标签配置型

  • is_show : 是否显示标签
  • color : 文字颜色
  • font_size: 文字的字体大小
  • rotate : 标签旋转
  1. 例子 :yaxis_opts=options.AxisOpts(axislabel_opts=options.LabelOpts(rotate=45))
  1. 对应的图像.set_global_opts(
  2. 对应的配置项=对应的全局配置项含有系列配置项(对应全局配置项含有的系列配置项属性=options.LabelOpts(is_show=True, color=None, font_size=None, rotate=None))
  3. )

pyecharts Line折线图

绘制简单的折线图

  • 导入绘制折线图的库 : from pyecharts.charts import Line
  • series_name : 图例名字
  • y_axis : 导入的数据,注意导入的数据x轴要与y轴数据长度相同
  1. import pyecharts.options as opts
  2. from pyecharts.charts import Line
  3. # 绘制数据
  4. x = ['seaborn', 'matplotlib', 'plotly', 'pyecharts', 'python']
  5. y1 = [440, 550, 770, 450, 800]
  6. y2 = [570, 1340, 1370, 1111, 2222]
  7. # 绘制简单的折线图
  8. # 提示你传入一个Line,但不能约束你
  9. # 并提示你要返回Line
  10. def line_charts()->Line:
  11. c = Line()
  12. c.set_global_opts(opts.TitleOpts(title='折线图可视化',subtitle='Small-J'))
  13. c.add_xaxis(x)
  14. c.add_yaxis(series_name='数据-A', y_axis=y1)
  15. c.add_yaxis(series_name='数据-B', y_axis=y2)
  16. return c
  17. # 绘制图表
  18. c = line_charts()
  19. c.render_notebook()

Pyecharts数据可视化 - 图4

Line 增加标题与图例

  • set_global_opts : 全局设置
  • opts.TitleOpts : 标题配置项
  • title : 主标题
  • subtitle : 副标题
  • legend_opts : 图例配置项
  • is_show : 是否显示图例组件,默认情况下显示图例组件
  1. import pyecharts.options as opts
  2. from pyecharts.charts import Line
  3. # 绘制数据
  4. x = ['seaborn', 'matplotlib', 'plotly', 'pyecharts', 'python']
  5. y1 = [440, 550, 770, 450, 800]
  6. y2 = [570, 1340, 1370, 1111, 2222]
  7. # 绘制简单的折线图
  8. # 提示你传入一个Line,但不能约束你
  9. # 并提示你要返回Line
  10. def line_charts()->Line:
  11. c = Line()
  12. c.set_global_opts(
  13. title_opts=opts.TitleOpts(title='折线图可视化',subtitle='Small-J'),
  14. legend_opts=opts.LegendOpts(is_show=True)
  15. )
  16. c.add_xaxis(x)
  17. c.add_yaxis(series_name='数据-A', y_axis=y1)
  18. c.add_yaxis(series_name='数据-B', y_axis=y2)
  19. return c
  20. # 绘制图表
  21. c = line_charts()
  22. c.render_notebook()

Pyecharts数据可视化 - 图5

Line 增加提示项

  • set_global_opts : 全局配置
  • tooltip_opts : 增加提示项
  • is_show : 是否开启提示项
  • trigger : 默认情况下item 数据项图形触发
  • item : 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
  • axis : 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
  • axis_pointer_type : 指示器类型
  • line : 直线指示器
  • shadow : 阴影指示器
  • cross : 十字准星指示器
  1. import pyecharts.options as opts
  2. from pyecharts.charts import Line
  3. # 绘制数据
  4. x = ['seaborn', 'matplotlib', 'plotly', 'pyecharts', 'python']
  5. y1 = [440, 550, 770, 450, 800]
  6. y2 = [570, 1340, 1370, 1111, 2222]
  7. # 绘制简单的折线图
  8. # 提示你传入一个Line,但不能约束你
  9. # 并提示你要返回Line
  10. # init_opts = opts.InitOpts(width='1500px',height='1000px')
  11. def line_charts()->Line:
  12. c = Line()
  13. c.set_global_opts(
  14. title_opts=opts.TitleOpts(title='折线图可视化',subtitle='Small-J'),
  15. legend_opts=opts.LegendOpts(is_show=True),
  16. tooltip_opts=opts.TooltipOpts(is_show=True, trigger='axis',axis_pointer_type='cross')
  17. )
  18. c.add_xaxis(x)
  19. c.add_yaxis(series_name='数据-A', y_axis=y1)
  20. c.add_yaxis(series_name='数据-B', y_axis=y2)
  21. return c
  22. # 绘制图表
  23. c = line_charts()
  24. c.render_notebook()

Pyecharts数据可视化 - 图6

Line 工具箱配置项

  • set_global_opts : 全局设置
  • toolbox_opts : 工具箱的配置信息
  • is_show : 是否显示提示框组件
  1. import pyecharts.options as opts
  2. from pyecharts.charts import Line
  3. # 绘制数据
  4. x = ['seaborn', 'matplotlib', 'plotly', 'pyecharts', 'python']
  5. y1 = [440, 550, 770, 450, 800]
  6. y2 = [570, 1340, 1370, 1111, 2222]
  7. # 绘制折线图并绘制
  8. def line_charts()->Line:
  9. line2 = Line()
  10. # x轴并没有series_name
  11. line2.set_global_opts(toolbox_opts=opts.ToolboxOpts(is_show=True))
  12. line2.add_xaxis(x)
  13. line2.add_yaxis(y_axis=y1,series_name='数据-A')
  14. line2.add_yaxis(y_axis=y2,series_name='数据-B')
  15. return line2
  16. line2 = line_charts()
  17. line2.render_notebook()

Pyecharts数据可视化 - 图7

Line 的展示图例

Pyecharts数据可视化 - 图8

pyecharts Bar柱状图

绘制一个简单的Bar图

  • Bar : 柱状图
  • 注意:add_yaxis必须要传入yaxis_data, series_name这两个参数
  1. # 导入需要的库
  2. from pyecharts.charts import Bar
  3. from pyecharts import options as opts
  4. # 绘制信息
  5. x = ['Python 数据可视化 seaborn', 'Python 数据可视化 matplotlib', 'Python 数据可视化 pyecharts']
  6. y1 = [1140, 559, 270]
  7. # 创建Bar示例对象,同时x,y赋值填充
  8. def Bar_chart():
  9. bar = Bar()
  10. # 设置全局配置项
  11. bar.set_global_opts=(opts.TitleOpts(title='Small-J'))
  12. bar.add_xaxis(xaxis_data=x)
  13. # y轴添加信息必须要有series_name这个参数
  14. bar.add_yaxis(yaxis_data=y1,series_name='数据-A')
  15. return bar
  16. bar = Bar_chart()
  17. bar.render_notebook()

Pyecharts数据可视化 - 图9

绘制图表反转

  • reversal_axis : 将x,y轴进行反转
  1. # 创建Bar示例对象,同时x,y赋值填充
  2. def Bar_chart():
  3. bar = Bar()
  4. # 设置全局配置项
  5. bar.set_global_opts=(opts.TitleOpts(title='Small-J'))
  6. bar.add_xaxis(xaxis_data=x)
  7. # y轴添加信息必须要有series_name这个参数
  8. bar.add_yaxis(yaxis_data=y1,series_name='数据-A')
  9. bar.reversal_axis()
  10. return bar
  11. bar = Bar_chart()
  12. bar.render_notebook()

文本倾斜度设置

  • yaxis_opts : y轴的配置信息,对应也有x轴的配置信息
  • opts_AxisOpts : 坐标轴配置项
  • is_inverse : 将对应的数据进行旋转
  • axislabel_opts : 坐标轴指示器的文本标签,继承于LabelOpts
  • rotate : 旋转的度数
  1. x = ['seaborn', 'plotly', 'matplotlib']
  2. y1 = [1140, 550, 270]
  3. y2 = [570, 1340, 1370]
  4. # 实例化
  5. bar = Bar()
  6. bar.add_xaxis(xaxis_data=x)
  7. bar.add_yaxis(series_name='数据--A', yaxis_data=y1)
  8. bar.add_yaxis(series_name='数据--B', yaxis_data=y2)
  9. # 设置全局参数配置
  10. bar.set_global_opts(
  11. title_opts=opts.TitleOpts(title='Small-J'),
  12. # is_inverse : 将对应的数据进行旋转
  13. yaxis_opts=opts.AxisOpts(is_inverse=True, axislabel_opts=opts.LabelOpts(rotate=45))
  14. )
  15. # 设置倾斜
  16. bar.reversal_axis()
  17. bar.render_notebook()

Pyecharts数据可视化 - 图10

设置图表的大小

  • opts.InitOpts : 初始化配置,初始化是在实例化对象中使用
  • width : 宽度
  • height : 高度
  1. x = ['seaborn', 'plotly', 'matplotlib']
  2. y1 = [1140, 550, 270]
  3. y2 = [570, 1340, 1370]
  4. # 实例化
  5. # 设置初始化配置项
  6. bar = Bar(opts.InitOpts(width='500px', height='500px'))
  7. bar.add_xaxis(xaxis_data=x)
  8. bar.add_yaxis(series_name='数据--A', yaxis_data=y1)
  9. bar.add_yaxis(series_name='数据--B', yaxis_data=y2)
  10. # 设置全局参数配置
  11. bar.set_global_opts(
  12. title_opts=opts.TitleOpts(title='Small-J'),
  13. # is_inverse : 将对应的数据进行旋转
  14. yaxis_opts=opts.AxisOpts(is_inverse=True, axislabel_opts=opts.LabelOpts(rotate=45))
  15. )
  16. # 设置倾斜
  17. bar.reversal_axis()
  18. bar.render_notebook()

Pyecharts数据可视化 - 图11

如何设置区域缩放配置

  • datazoom_opts : 区域缩放配置
  • type_ : 组件类型 “slider” “inside”
  • inside : 滑动滚轮显示数据
  • slider : 通过下方的组件来进行滑动
  • range_start : 数据窗口范围的起始百分比 ,范围0~100。表示 0% ~ 100%
  • range_end : 数据窗口的结束百分比,范围0100。表示0%100%
  • orient : 布局方式是横还是竖。不仅是布局方式,对于直角坐标而言,也决定了,缺省情况控制横向数轴还是纵向数轴
  • horizonal : 横项数据
  • vertical : 纵向数据
  1. # @Time : 2020/7/31 0:30
  2. # @Author : Small-J
  3. # 封装Bar绘制图表的方式
  4. from pyecharts.charts import Bar
  5. from pyecharts import options
  6. # 保存为图片类型
  7. from snapshot_selenium import snapshot as driver
  8. from pyecharts.render import make_snapshot
  9. x = ['seaborn', 'plotly', 'matplotlib']
  10. y1 = [1140, 550, 270]
  11. y2 = [570, 1340, 1370]
  12. # 指定
  13. def bar_charts() -> Bar():
  14. bar = Bar()
  15. bar.add_xaxis(x)
  16. bar.add_yaxis(series_name='A-平台', yaxis_data=y1)
  17. bar.add_yaxis(series_name='B-平台', yaxis_data=y2)
  18. # x y 轴旋转
  19. bar.reversal_axis()
  20. # 设置全局项
  21. bar.set_global_opts(
  22. # 标题配置项
  23. title_opts=options.TitleOpts(title='Small-J'),
  24. # y轴配置项
  25. # axislabel_opts : 该参数用于配置坐标轴指示器标签
  26. yaxis_opts=options.AxisOpts(axislabel_opts=options.LabelOpts(rotate=45)),
  27. # 区域缩放配置 DataZoomOpts
  28. datazoom_opts=options.DataZoomOpts(type_='slider', range_start=0, range_end=1500, orient='vertical')
  29. )
  30. return bar
  31. d = bar_charts()
  32. d.render('./html/pyechart_bar.html')

Pyecharts数据可视化 - 图12

Line折线图 + Bar柱状图组合

  • init_opts : 初始化配置
  • width : 宽度
  • height : 高度
  • extend_axis : 扩张x/y轴
  • xaxis_data : 扩展x坐标轴数据项
  • xaxis : 扩展x坐标轴配置项 —> 要使用opts.AxisOpts中的参数
  • yaxis : 新增Y坐标轴配置项——> 要使用opts.AxisOpts中的参数
  • opts.AxisOpts : 中的参数讲解
  • name : 坐标轴名称
  • type_ : 坐标轴类型
  • value : 数值轴,适用于连续数据
  • category : 类名轴,使用于离散的类目数据
  • time : 时间轴
  • min_ : 坐标轴刻度最小值
  • max_ : 坐标轴刻度最大值
  • interval : 强制设置坐标轴分隔间隔
  • axisabel_opts : 坐标轴标签配置项
  • overlap : 是一个层叠多图 ——-> 是在对应的直角坐标图表使用
  • 可以使用的图表 :Bar柱状图, Boxplot箱型图, EffectScatter 涟漪特效散点图, HeatMap 热力图, Kine k线图
  • Line 折线图, PictorialBar象形柱状图, Scatter 散点图,
  • Line : 折线图参数讲解
  • series_name : 图例的名字
  • yais_index : 使用的y轴的index,在单个图表实例中存在多个y轴的时候使用
  • label_opts : 标签配置项,使用系列配置项
  • is_show : 是否显示标签
  1. # @Time : 2020/8/1 14:25
  2. # @Author : Small-J
  3. from pyecharts import options as opts
  4. from pyecharts.charts import Bar, Line
  5. # 柱状图: y轴显示不同平台的销售数量
  6. # 折线图: y轴另一侧显示不同平台课程对应的价格
  7. x = ['Python', 'Seaborn', 'Plotly', 'Pyecharts']
  8. # 绘制柱状图
  9. def bar_charts() -> Bar():
  10. y1 = [1140, 559, 270, 663]
  11. y2 = [570, 1340, 1370, 1000]
  12. bar = Bar(init_opts=opts.InitOpts(width='1000px', height='600px'))
  13. bar.add_xaxis(x)
  14. bar.add_yaxis(yaxis_data=y1, series_name='数据-A')
  15. bar.add_yaxis(yaxis_data=y2, series_name='数据-B')
  16. bar.set_global_opts(
  17. title_opts=opts.TitleOpts(title='数据走势')
  18. )
  19. # bar中有这么一个方法extend_axis扩展轴,来自于RectChart
  20. # 扩展的是y轴数据
  21. # name: 扩展轴的名字
  22. # min: 坐标轴刻度最小值
  23. # max: 坐标轴刻度最大值
  24. # interval : 强制设置坐标轴分隔间隔
  25. # axislabel_opts : 坐标轴标签配置项
  26. bar.extend_axis(yaxis=opts.AxisOpts(name='价格', type_='value', min_=0, max_=200, interval=10, axislabel_opts=opts.LabelOpts(formatter='{value}元')))
  27. # bar.render('./html/line_chart and bar_chart.html')
  28. return bar
  29. # 绘制折线图
  30. def line_charts() -> Line():
  31. y = [200, 180, 49, 79]
  32. line = Line()
  33. line.add_xaxis(xaxis_data=x)
  34. # series_name : 图例名字
  35. # y_axis : 对应的数据
  36. # yaxis_index : 使用的y轴的index,在单个图表实例中存在多个x轴的时候使用
  37. # label_opts : 标签配置项
  38. line.add_yaxis(series_name='价格', yaxis_index=1, y_axis=y, label_opts=opts.LabelOpts(is_show=False))
  39. return line
  40. # 组合
  41. bar = bar_charts()
  42. line = line_charts()
  43. # overlap 是一个层叠多图的函数
  44. # 直角坐标系图表的函数使用
  45. bar.overlap(line).render('./html/line_chart and bar_chart.html')

Pyecharts数据可视化 - 图13

pyecharts Pie饼状图

绘制一个简单的饼图

  • series_name: 系列名称
  • data_pair : 系列数据项 , 注意: 该系列数据支持的格式有[(key,value), (key2,value)] 或者 [[key,value], [key1, value1]]
  • ops.TitleOpts: 标题配置项
  • pos_left : title组件离容器左边侧的距离
  • pos_top : title组件离容器上侧的距离
  1. # @Time : 2020/8/1 19:04
  2. # @Author : Small-J
  3. # 饼图需要的数据格式
  4. # [[x1, y1], [x2, y2]]
  5. from pyecharts import options as opts
  6. from pyecharts.charts import Pie
  7. # 构建Pie的数据
  8. x_data = ['直接访问', '营销推广', '博客推广', '搜索引擎']
  9. y_data = [830, 214, 300, 1100]
  10. # Pie 设置指定的格式
  11. # for z in list(zip(x_data, y_data)) 相当于是一个列表
  12. # data = [list(z) for z in list(zip(x_data, y_data))]
  13. data = [i for i in zip(x_data, y_data)]
  14. print(data)
  15. def pie_chart() -> Pie():
  16. pie = Pie(init_opts=opts.InitOpts(width='500px', height='500px'))
  17. # series_name : 系列名称
  18. # data_pair : 系列数据项
  19. pie.add(series_name='访问来源', data_pair=data)
  20. # 添加全局设置
  21. pie.set_global_opts(
  22. title_opts=opts.TitleOpts(title='课程不同的分布情况', pos_left='center', pos_top=30),
  23. tooltip_opts=opts.TooltipOpts(trigger='item', formatter='{a} </br> {b}:{c} ({d}%)'),
  24. )
  25. return pie
  26. pie = pie_chart()
  27. pie.render('./html/pyechart_pie.html')

Pyecharts数据可视化 - 图14

绘制Pie圆弧状饼图

  1. from pyecharts.charts import Pie
  2. from pyecharts import options as opts
  3. # 构建Pie的数据
  4. x_data = ['直接访问', '营销推广', '博客推广', '搜索引擎']
  5. y_data = [830, 214, 300, 1100]
  6. data = [i for i in zip(x_data, y_data)]
  7. def pie_charts() -> Pie():
  8. pie = Pie()
  9. pie.add(series_name='访问来源', data_pair=data, radius=['40%', '75%'])
  10. pie.set_global_opts(
  11. title_opts=opts.TitleOpts(title='不同数据的分布情况'),
  12. # 提示框配置项,设置百分比数据占比
  13. tooltip_opts=opts.TooltipOpts(formatter='{a} </br> {b}:{c} ({d}%)'),
  14. # 设置图例的分布区域, vertical :垂直的, pos_top:图例组件离容器上册侧的距离, pos_Left: 图例组件离容器左侧的距离
  15. legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%'),
  16. )
  17. return pie
  18. p = pie_charts()
  19. p.render('./html/pyechart_pie.html')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkKkolDE-Pyecharts数据可视化 - 图15

pyechart scatter散点图

第一个散点图

  • add_xaxis : 对应的x轴数据
  • add_yaxis : 对应的y轴数据
  • label_opts: 标签配置项
  • is_show : 不显示该标签
  • title_opts : 标题配置项
  • pos_top : 组件离容器的高度
  • pos_left : title组件离容器的左侧的距离
  • left : 左侧
  • center : 中间
  • right : 右侧
  1. # @Time : 2020/8/2 1:41
  2. # @Author : Small-J
  3. from pyecharts import options as opts
  4. from pyecharts.charts import Scatter
  5. import numpy as np
  6. x_data = np.linspace(0, 10, 30)
  7. y1 = np.sin(x_data)
  8. y2 = np.cos(x_data)
  9. def scatter_charts() -> Scatter():
  10. scatter = Scatter()
  11. scatter.add_xaxis(xaxis_data=x_data)
  12. # label_opts: 标签配置项,不显示该标签
  13. scatter.add_yaxis(y_axis=y1, series_name='sin(x) 函数散点图', label_opts=opts.LabelOpts(is_show=False))
  14. scatter.add_yaxis(y_axis=y2, series_name='con(x) 函数散点图', label_opts=opts.LabelOpts(is_show=False))
  15. # pos_top: 组件离容器的上侧距离
  16. # pos_left : 三个参数 left 、center、right
  17. scatter.set_global_opts(
  18. title_opts=opts.TitleOpts(title='Small-J 第一个散点图', pos_top='20px', pos_left='center')
  19. )
  20. return scatter
  21. scatter = scatter_charts()
  22. scatter.render('./html/scatter.html')

Pyecharts数据可视化 - 图16

散点图 大小与形状设置

  • scatter.add_yaxis : 散点图添加数据
  • series_name : 系列名称
  • y_axis : 系列数据
  • symbol : 标记的图形 : circle 、rect、roundRect、triangle、diamond、pin、arrow、none
  • symbol_size : 标记的大小
  1. # @Time : 2020/8/2 1:41
  2. # @Author : Small-J
  3. from pyecharts import options as opts
  4. from pyecharts.charts import Scatter
  5. import numpy as np
  6. x_data = np.linspace(0, 10, 30)
  7. y1 = np.sin(x_data)
  8. y2 = np.cos(x_data)
  9. def scatter_charts() -> Scatter():
  10. scatter = Scatter()
  11. scatter.add_xaxis(xaxis_data=x_data)
  12. # label_opts: 标签配置项,不显示该标签
  13. # symbol_size :设置形状的大小,默认大小为10, 例如[20, 10]可标记宽为20, 高为10
  14. # symbol : 标记的图形
  15. scatter.add_yaxis(y_axis=y1, series_name='sin(x) 函数散点图', label_opts=opts.LabelOpts(is_show=False), symbol_size=20, symbol='pin')
  16. scatter.add_yaxis(y_axis=y2, series_name='con(x) 函数散点图', label_opts=opts.LabelOpts(is_show=False), symbol_size=20, symbol='rect')
  17. # pos_top: 组件离容器的上侧距离
  18. # pos_left : 三个参数 left 、center、right
  19. scatter.set_global_opts(
  20. title_opts=opts.TitleOpts(title='Small-J 第一个散点图', pos_top='20px', pos_left='center'),
  21. tooltip_opts=opts.TooltipOpts(is_show=True),
  22. toolbox_opts=opts.ToolboxOpts(is_show=True),
  23. )
  24. return scatter
  25. scatter = scatter_charts()
  26. scatter.render('./html/scatter.html')

Pyecharts数据可视化 - 图17

pyechart WordCloud 词云

  • series_name: 系列名称
  • data_pair : 系列数据项
  1. # @Time : 2020/8/2 14:03
  2. # @Author : Small-J
  3. # 导入词云绘图库
  4. from pyecharts import options as opts
  5. from pyecharts.charts import WordCloud
  6. data = [
  7. ('阿黛尔近照', 3071869),
  8. ('澳大利亚暴发H7N7禽流感', 1936180),
  9. ('蔡徐坤很芒', 1418832),
  10. ('囍 绝了', 1397275),
  11. ('司机冒死开走起火货车后续', 1084561)
  12. ]
  13. def wordcloud() -> WordCloud():
  14. wordcloud = WordCloud()
  15. wordcloud.add(series_name='词频分析', data_pair=data)
  16. wordcloud.add(series_name='demo', data_pair=data)
  17. wordcloud.set_global_opts(
  18. title_opts=opts.TitleOpts(title='热词分析')
  19. )
  20. wordcloud.render('./html/wordcoud.html')
  21. return wordcloud
  22. w = wordcloud()
  23. w.render()

Pyecharts数据可视化 - 图18

pyechart geo地理图形

  • Geo : 地理坐标系
  • add_schema : 类型参数
  • maptype : 地图类型
  • is_roam : 是否开启鼠标缩放和平移漫游
  • label_opts : 标签配置项
  • add : 系列名字
  • series_name : 系列名字
  • data_pair : 数据项
  • symbol_size : 标记的大小
  • type_ : Geo图类型,有scattereffectScatterheatmaplines
  • symbol : 标记的大小
  1. # @Time : 2020/8/2 14:33
  2. # @Author : Small-J
  3. # 绘制地理图表
  4. from pyecharts import options as opts
  5. from pyecharts.charts import Geo
  6. from pyecharts.globals import ChartType
  7. import pyecharts
  8. import warnings
  9. warnings.filterwarnings('ignore')
  10. data = [['广东', 104320], ['广西', 103320], ['山东', 100000]]
  11. def geo_chart() -> Geo():
  12. geo = Geo()
  13. # maptype : 地图类型
  14. # is_roam : 是否开启鼠标缩放和平移漫游
  15. # label_opts : 标签配置项
  16. geo.add_schema(maptype='china', is_roam=False, label_opts=opts.LabelOpts(is_show=True))
  17. geo.add(series_name='', data_pair=data, type_=ChartType.EFFECT_SCATTER, symbol_size=12, symbol='pie')
  18. geo.set_global_opts(
  19. title_opts=opts.TitleOpts(title='人口分布情况')
  20. )
  21. return geo
  22. geo = geo_chart()
  23. geo.render('./html/geo.html')

Pyecharts数据可视化 - 图19