在上一节Pyecharts V1 快速入门(一):配置参数传递及示例 介绍了图表和快速创建及配置项参数设置及传递。这节将会在前面的基础上,创建柱形图和双Y轴折线图,并且使用overlap将两条折线叠加在同一个图表上
1.全局配置项set_global_options()
bar=Bar(init_opts=opts.InitOpts(bg_color='rgba(255,249,196,0.2)',width='1000px',height='600px',page_title='Test',theme=ThemeType.ESSOS)) # 设置图表背景色、大小、主题、网页标题
在上一节我们设置的是图表背景色、大小、主题、网页标题,但set_global_options()
是对图表更细致和实用的设置,下面是设置的对应效果
查看源码可知set_global_options()
是类Chart
成员函数,UML类图如下
源码如下,可以看到是和开头的设置效果图片是对应的
2.系列配置项set_series_opts()
跟全局配置项同理,不再赘述
配置项的具体设置应该结合官方文档和源码学习,必须注意参数的名字和类型,忘了就看下源码。下面给出一个实例
提醒:应该在add_xaxis和add_yaxis后,再调用set_global_opts和set_series_opts,不然会造成设置失效
3.实战
本节使用的数据是某件商品的尺码、价格、利润、销量,如下
size=[35.5,36.0,36.5,37.5,38.0,38.5,39.0,40.0]
price=[580, 571, 577, 582, 582, 545, 589, 566]
profit=[132, 123, 129, 134, 134, 99, 140, 119]
sold_num=[10, 31, 26, 43, 18, 27, 7, 6]
①price的柱状图
from pyecharts.charts import Bar,Line,Page
from pyecharts import options as opts
def draw_bar():
size = [35.5, 36.0, 36.5, 37.5, 38.0, 38.5, 39.0, 40.0]
price = [580, 571, 577, 582, 582, 545, 589, 566]
bar=Bar()
bar.add_xaxis(size) # 设置x轴元素
bar.add_yaxis("价格", price) # 设置y轴名称以及数值
bar.set_global_opts(title_opts=opts.TitleOpts(title="价格柱状图"), # 设置图表标题
toolbox_opts=opts.ToolboxOpts(is_show=True,feature=opts.ToolBoxFeatureOpts(data_zoom=opts.ToolBoxFeatureDataZoomOpts(is_show=False))), # 设置工具箱显示,并且关闭区域缩放配置项
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}元")) # 设置y轴单位
)
bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True,color='red'), # 设置显示标签及颜色,标签是显示在柱上的数值
itemstyle_opts=opts.ItemStyleOpts(color='purple')) # 设置图元颜色
bar.render()
为什么是这样设置y轴单位?
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}元")) # 设置y轴单位
这是根据源码和官方文档得出来的,从set_global_opts()
中得到yaxis_opts: types.Axis = None
继而转到D:\Python\Lib\site-packages\pyecharts-1.9.0-py3.7.egg\pyecharts\types.py
得到
再转到D:\Python\Lib\site-packages\pyecharts-1.9.0-py3.7.egg\pyecharts\options\global_options.py
看到类型是LabelOpts
转到D:\Python\Lib\site-packages\pyecharts-1.9.0-py3.7.egg\pyecharts\options\series_options.py
在官方文档中找到相应章节
以上就是典型的源码和官方文档的使用,当不知道如何进行参数设置以达到理想效果的时候,千万别着急,从源码入手,关注参数名字和类型,自然会迎刃而解
②profit和sold_num的双Y轴折线图
有时候需要反映同一个x值下,两个指标的关系,就得用到双Y轴
def draw_double_line():
size = ['35.5', '36.0', '36.5', '37.5', '38.0', '38.5', '39.0', '40.0'] # 元素必须是str类型,否则不能显示折线
profit = [132, 123, 129, 134, 134, 99, 140, 119]
sold_num = [10, 31, 26, 43, 18, 27, 7, 6]
line1=Line()
line1.add_xaxis(size)
line1.add_yaxis(series_name="利润", y_axis=profit)
line1.extend_axis(yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}双"),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='blue')))) # 添加一条蓝色的y轴
line1.set_global_opts(title_opts=opts.TitleOpts(title="利润与销量"),
toolbox_opts=opts.ToolboxOpts(is_show=True,feature=opts.ToolBoxFeatureOpts(data_zoom=opts.ToolBoxFeatureDataZoomOpts(is_show=False))),
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}元"),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="red"))), # 设置y轴单位和颜色
)
line1.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
line2=Line().add_xaxis(size).add_yaxis("销量",sold_num,yaxis_index=1) # 创建一个新的Line对象,并且设置y轴索引,即挂在新建的y轴上
line1.overlap(line2) # 将line2叠加在line1图上
line1.set_colors(["red","blue"]) # 为了区分两条line,设置不同颜色
line1.render()
配合工具箱与动画的演示如下,能非常直观地反应数据量以及二者的关系
注意:为什么有时候折线图没有显示折线?
因为x轴的数据格式不对,记住x轴是一个list,里面的元素必须是str
4.总结
在set_global_opts()
中用的最多的就是title_opts
、toolbox_opts
、xaxis_opts
、yaxis_opts
,其中AxisOpts
非常重要
未经同意,请勿转载