查看原文
其他

PyEcharts-交互666的Python绘图工具

pythonic生物人 pythonic生物人 2022-12-04

往期精彩戳:统计精进| py基础 | py绘图 |NGS精进 | perl基础 | R绘图

本文目录

正题前的灵魂三问:

pyecharts是什么鬼?
pyecharts和数据分析又有什么关系?
pyecharts碉在哪?【强烈推荐直接看倒数第二节

  1. pyecharts = Python + Echarts;
  2. Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了
  3. pyecharts是目前为止小编介绍过的第二个国内开发的可视化工具,之前那个cutecharts也同样出自他只手,赶紧去stars支持一下:<https://github.com/chenjiandongx>。

4.更多了解pyecharts:https://github.com/pyecharts/pyecharts/issues/1402-来自 pyecharts 作者的一封通知函


pyecharts两种使用方法

链式调用方法

就是一个属性和另外一个属性之间使用“.”链接,不理解也没有关系,直接看下面代码:

from pyecharts.charts import Bar

bar = (
    Bar()
    .add_xaxis(list("ABCDE"))  #add_xaxis为x轴方向赋值
    .add_yaxis("图例啊", [4101361002590]))  #add_yaxis为y轴方向赋值

bar.render_notebook()  #在jupyter notebook中渲染
#bar.render()#html格式渲染

得到上面的交互图。

单独调用方法

这种方式类似之前介绍的Matplotlib,还是来看下面代码加强了解:

from pyecharts.charts import Bar

bar = Bar()
bar.add_xaxis(list("ABCDE"))
bar.add_yaxis("图例啊", [4101361002590])
bar.render_notebook()

输出的结果和上面一摸一样,不再贴图了。由于本人习惯了Matplotlib的单独调用方法,后文使用单独调用方法讲述。


图解pyecharts核心配置options

上一节,我们没有任何设置,默认输出的图形如下:

但是,在实际生产中,默认配置可能不能满足需求,比如说想要突出最大值、最小值、平均值、显示标题、个性化图例等等,例如下面这种:
这时候就需要修改默认参数了,pyecharts的配置参数都在options这个子模块下,一切皆options

options可以分为两大类

  • 全局配置项,通过set_global_opts方法设置
#所有全局配置项都在这里了
AnimationOpts:Echarts 画图动画配置项
InitOpts:初始化配置项
ToolBoxFeatureSaveAsImagesOpts:工具箱保存图片配置项
ToolBoxFeatureRestoreOpts:工具箱还原配置项
ToolBoxFeatureDataViewOpts:工具箱数据视图工具
ToolBoxFeatureDataZoomOpts:工具箱区域缩放配置项
ToolBoxFeatureMagicTypeOpts:工具箱动态类型切换配置项
ToolBoxFeatureBrushOpts:工具箱选框组件配置项
ToolBoxFeatureOpts:工具箱工具配置项
ToolboxOpts:工具箱配置项
BrushOpts:区域选择组件配置项
TitleOpts:标题配置项
DataZoomOpts:区域缩放配置项
LegendOpts:图例配置项
VisualMapOpts:视觉映射配置项
TooltipOpts:提示框配置项
AxisLineOpts: 坐标轴轴线配置项
AxisTickOpts: 坐标轴刻度配置项
AxisPointerOpts: 坐标轴指示器配置项
AxisOpts:坐标轴配置项
SingleAxisOpts:单轴配置项
GraphicGroup:原生图形元素组件
  • 系列配置项,可通过set_series_opts方法设置
#系列配置项都在这里了
ItemStyleOpts:图元样式配置项
TextStyleOpts:文字样式配置项
LabelOpts:标签配置项
LineStyleOpts:线样式配置项
Lines3DEffectOpts: 3D线样式配置项
SplitLineOpts:分割线配置项
MarkPointItem:标记点数据项
MarkPointOpts:标记点配置项
MarkLineItem:标记线数据项
MarkLineOpts:标记线配置项
MarkAreaItem: 标记区域数据项
MarkAreaOpts: 标记区域配置项
EffectOpts:涟漪特效配置项
AreaStyleOpts:区域填充样式配置项
SplitAreaOpts:分隔区域配置项
MinorTickOpts:次级刻度配置项
MinorSplitLineOpts:次级分割线配置项

一个例子整明白options

set_global_opts设置全局配置项,这里通过TitleOpts设置标题、ToolboxOpts设置工具栏、TooltipOpts设置提示兰、legend_opts设置图例四个全局配置项,说明如何使用全局配置项,参考:`

  • https://pyecharts.org/#/zh-cn/global_options?id=titleopts%ef%bc%9a%e6%a0%87%e9%a2%98%e9%85%8d%e7%bd%ae%e9%a1%b9
  • https://pyecharts.org/#/zh-cn/global_options?id=toolboxopts%ef%bc%9a%e5%b7%a5%e5%85%b7%e7%ae%b1%e9%85%8d%e7%bd%ae%e9%a1%b9
  • https://pyecharts.org/#/zh-cn/global_options?id=tooltipopts%ef%bc%9a%e6%8f%90%e7%a4%ba%e6%a1%86%e9%85%8d%e7%bd%ae%e9%a1%b9
  • https://pyecharts.org/#/zh-cn/global_options?id=legendopts%ef%bc%9a%e5%9b%be%e4%be%8b%e9%85%8d%e7%bd%ae%e9%a1%b9
#全局配置项,
bar.set_global_opts(
    #TitleOpts:标题配置项
    opts.TitleOpts(
        title="这里是主标题:title",
        #TextStyleOpts设置title属性
        title_textstyle_opts=opts.TextStyleOpts(
            font_size=25,  # 标题大小
            color="#45a0a2",  # 主标题颜色
            font_weight="bold",  # 字体加粗
            font_family="Microsoft YaHei",  #设置字体
        ),
        pos_left=150,  #主副标题距离画布左侧距离,类似的还有pos_right、pos_top、pos_bottom、
        subtitle="这里是副标题:subtitle",
        subtitle_textstyle_opts=opts.TextStyleOpts(
            color="#45a0a2",  # 次标题颜色
            font_weight="bold",  # 字体加粗"
        )),
    #ToolboxOpts设置工具栏组件
    toolbox_opts=opts.ToolboxOpts(),
    #TooltipOpts设置提示框
    tooltip_opts=opts.TooltipOpts(
        position="left",  #默认不设置时位置会跟随鼠标的位置
        background_color="#4f6268",
        textstyle_opts=opts.TextStyleOpts(color="#01a2d9", font_size=14)),
    #legend_opts设置图例
    legend_opts=opts.LegendOpts(is_show=True, item_width=25, item_height=14))

设置后效果依次对应下图中四个部位:set_series_opts设置系列配置项,通过MarkLineOpts设置辅助线说明,参考:

-https://pyecharts.org/#/zh-cn/series_options?id=marklineopts%ef%bc%9a%e6%a0%87%e8%ae%b0%e7%ba%bf%e9%85%8d%e7%bd%ae%e9%a1%b9

#系列配置项
bar.set_series_opts(
    #MarkLineOpts设置辅助线
    markline_opts=opts.MarkLineOpts(
        data=[
            opts.MarkLineItem(type_="min",
                              name="最小值",
                              symbol="diamond",
                              symbol_size=10),
            opts.MarkLineItem(type_="max", name="最大值"),
            opts.MarkLineItem(type_="average", name="平均值"),
        ],
        linestyle_opts=opts.LineStyleOpts(color="#dc2624", type_="dotted"),
    ), )

设置效果见下图红圈圈住的三条辅助线。 完整代码获取上图完整代码


pyecharts的16种主题们

共计16种,输出一下:

from pyecharts.globals import ThemeType
print([i for i in dir(ThemeType) if not i.startswith('_')])

['CHALK', 'DARK', 'ESSOS', 'HALLOWEEN', 'INFOGRAPHIC', 'LIGHT', 'MACARONS', 'PURPLE_PASSION', 'ROMA', 'ROMANTIC', 'SHINE', 'VINTAGE', 'WALDEN', 'WESTEROS', 'WHITE', 'WONDERLAND']


pyecharts主题使用

from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType

bar = Bar(
    init_opts=opts.InitOpts(theme=ThemeType.CHALK))  #在这里输入啊,设置绘图主题为CHALK
bar.add_xaxis(list("ABCDE"))
bar.add_yaxis("图例啊", [4101361002590])
bar.render_notebook()

VINTAGE主题

DARK主题

不一一试用了。。


pyecharts支持哪些图形

支持的图形都放在pyecharts.charts这个类里,输出看看:

import pyecharts.charts 
print(dir(pyecharts.charts))

'BMap', 'Bar', 'Bar3D', 'Boxplot', 'Calendar', 'Candlestick', 'EffectScatter', 'Funnel', 'Gauge', 'Geo', 'Graph', 'Grid', 'HeatMap', 'Kline', 'Line', 'Line3D', 'Liquid', 'Map', 'Map3D', 'MapGlobe', 'Page', 'Parallel', 'PictorialBar', 'Pie', 'Polar', 'Radar', 'Sankey', 'Scatter', 'Scatter3D', 'Sunburst', 'Surface3D', 'Tab', 'ThemeRiver', 'Timeline', 'Tree', 'TreeMap', 'WordCloud',

目测30+类,每一类还有很多变化,反正很多了。


pyecharts那些吊炸天的demo

demo都在这里了:https://gallery.pyecharts.org/#/Bar/bar_base_with_custom_background_image
基本上和echarts一样,也可以看echarts官网
https://echarts.apache.org/examples/en/index.html请张大的你的小嘴~~~

pie图 bar图scatter图graph图surface图tree图geo/map图snakey图


pyecharts学习资料

https://echarts.apache.org/en/index.html
https://github.com/pyecharts/pyecharts

欢迎关注“pythonic生物人”

往期精彩戳:统计精进py基础 | py绘图 |NGS精进 | perl基础 | R绘图

欢迎添加小编微信:答疑,开白,转载

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存