查看原文
其他

无处不在的系列配置项|从零开始的Pyecharts(三)

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:任   哲,中南财经政法大学经济学院

本文编辑:温和铭

技术总编:王子一

Stata&Python云端课程来啦!

       为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程Stata文本分析正则表达式网络爬虫基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

大家好,今天又是Pyecharts的学习,在介绍完全局配置项之后,我们的系列配置项教程来了!跟随这个系列,你可以拨开Pyecharts的神秘面纱,搞定那些云里雾里的代码,掌握一个强大的数据可视化工具!

Part.01
什么是系统配置项?

和全局配置项一样,Pyecharts并没有给系列配置项一个明确的定义。那么在这里,我想对系列配置项给出一个便于理解,但可能不是很严谨的解释:系列配置项是指可以对局部的某一系列的参数进行设置的配置项。这里的局部某一系列可以是柱状图里某商家对应的柱子;折线图里某一系列数据对应的一条折线;图表里的某部分文字等等。也就是说,为了更好地展现我们手中的数据,在作图时我们需要对图表里的某部分作出个性化的修改,此时就是系列配置项大展身手的时候了。好了,解释完什么是系列配置项之后,我们来正式开始学习吧!

接下来的内容主要包括:如何设置系列配置项中的组件参数;添加系列配置项和一个实例。

Part.02
如何设置系列配置项中的组件参数在Pyecharts的官方文档中,系列配置项一共包含17个组件,接下来本文以折线图中常用的LineStyleOpts:线样式配置项为例来讲解如何了解组件的参数设置。首先观看相关源码:
class LineStyleOpts( # 是否显示 is_show: bool = True,
# 线宽。 width: Numeric = 1,
# 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 opacity: Numeric = 1,
# 线的弯曲度,0 表示完全不弯曲 curve: Numeric = 0,
# 线的类型。可选: # 'solid', 'dashed', 'dotted' type_: str = "solid",
# 线的颜色。 # 颜色可以使用 RGB 表示,比如 'rgb(128, 128, 128)',如果想要加上 alpha 通道表示不透明度, # 可以使用 RGBA,比如 'rgba(128, 128, 128, 0.5)',也可以使用十六进制格式,比如 '#ccc'。 # 除了纯色之外颜色也支持渐变色和纹理填充 color: Union[str, Sequence, None] = None,)注:为了减少篇幅,本文删去了颜色参数里的渐变色和纹理填充的相关注释。因为相关部分较难,学有余力的同学可自行学习。和学习全局配置项的方法一样,我们也先看第一个#后的内容:
# 是否显示is_show: bool = True

这里的意思是参数is_show的功能为是否显示折线,参数类型是布尔值,默认为True。同理,大家可以学习源码里提到的所有参数。在上述参数中,最常用的莫过于type_color了,其中type_表示折线的种类,共三种分别是solid实线,dashed虚线和dotted点线。color表示折线的颜色(事实上,柱状图里也有同样的color参数),该参数的调整可以通过以下四种方式:RGB值、RGBA值、十六进制格式的RGBA值和jscode。RGB值和RGBA值就是利用光的三原色原理来划分颜色的一种值,大家需要什么颜色直接百度即可;而jscode用于渐变色和纹理填充,本文不进行展开,感兴趣的同学自行学习吧。

Part.03
添加系列配置项

添加系列配置项有两种方法:一种是在需要设置的位置直接添加组件,比如需要调整折线,就在.add_yaxis()中添加LineStyleOpts组件;另一种是利用.set_series_opts()方法。两种方法的并不完全相同,在使用时要根据实际需求进行选择。下面对两种方法进行比较,我们用第一种方法创建一个有两条折线的折线图line1,并把其中一条修改为红色虚线;然后再用同样数据创建折线图line2,利用.set_series_opts()方法修改折线。最后使用Grid()方法并行展示两个图像。

注:第一种方法可以将组件添加至.set_global_opts()之中。

代码如下:

import pyecharts.options as optsfrom pyecharts.charts import Linefrom pyecharts.charts import Grid
x_data = ["一月","二月","三月","四月","五月","六月","七月"]y_data1 = ["100","500","700","800","300","500","200"]y_data2 = ["100","300","200","1000","600","200","800"]
# 方法一:在需要设置的位置直接添加组件line1=(Line() .add_xaxis(x_data) .add_yaxis("", y_data1,linestyle_opts=opts.LineStyleOpts( width = 4, opacity = 0.5, curve = 0.5, type_ = "dashed", color = "red" )) .add_yaxis("", y_data2) .set_global_opts(title_opts=opts.TitleOpts(title="LineStyleOpts-基本示例")))
# 方法二:.set_series_opts()方法line2 =( Line() .add_xaxis(x_data) .add_yaxis("", y_data1) .add_yaxis("", y_data2) .set_global_opts(title_opts=opts.TitleOpts(title="LineStyleOpts-基本示例")) .set_series_opts(linestyle_opts=opts.LineStyleOpts( width = 4, opacity = 0.5, curve = 0.5, type_ = "dashed", color = "red" )) )# Grid并行多图grid = ( Grid() .add( line2, grid_opts=opts.GridOpts(pos_left="55%")) .add( line1, grid_opts=opts.GridOpts(pos_right="55%")) .render(""))

在上图中,左边为line1,右边为line2。可以看到左边只有一条折线变成了虚线,而右边两条折线都变成了折线,也就是说.set_series_opts()方法作用在了所有的yaxis之上了。以上就是两种方法的不同,大家在使用的时候可以根据自身需要选择。

Part.04
一个实例

最后给大家展示一个柱状图的实例,在该实例中将会尽量多添加一些系列配置项的组件。包含的组件如下:ItemStyleOpts设置柱子参数、TextStyleOpts设置字体格式(可放在全局配置项之中)、LabelOpts为柱子添加标签、MarkPointOptsMarkLineOpts分类利用点和线对数据进行标注(例子中分别标记最大值和最小值)。代码中每一个#处都代表使用了一个组件,具体如下:

from pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.faker import Faker
c = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values(), # 设置柱子颜色 itemstyle_opts=opts.ItemStyleOpts( color="rgba(245, 222, 179)" )) .add_yaxis("商家B", Faker.values(), # 设置柱子颜色 itemstyle_opts=opts.ItemStyleOpts( border_width = 3, color = 'rgba(225, 0, 0, 0.8)', border_type = 'dashed', )) .set_global_opts( title_opts=opts.TitleOpts( title="Bar-系列配置项基本示例", # 将标题设置为italic, 并加粗 title_textstyle_opts=opts.TextStyleOpts( font_style = 'italic', font_weight = 'bolder' ), ) ) .set_series_opts( # label标签显示每个柱子代表的值 label_opts=opts.LabelOpts(is_show=True, color = "red", font_size = 12, font_style = 'italic', font_weight = 'normal', font_family = 'serif', rotate = 40, margin = 8, ), # markpoint标记最大值,选用箭头代替点 markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(name="最大值", type_ = "max", value_index = 1, value = max(Faker.values()), symbol_size = 20),], symbol = 'arrow', label_opts = opts.LabelOpts(position="inside", color="rgba(0, 0, 0)") ), # markline标记最小值 markline_opts=opts.MarkLineOpts( data=[ opts.MarkLineItem(type_="min", name="最小值"), ] ), ))c.render_notebook()

最后的实例中展示了几种常用的组件,可以看到他们的位置极其灵活,真的可以说无处不在,所以在使用时大家一定要主要把组件用在合适的地方。如果对以上组件有使用需求,可以前往官方文档查找具体参数,网址为https://pyecharts.org/#/zh-cn/series_options

当把全局配置项和系列配置项搞懂之后,就可以说你已经掌握了Pyecharts了。这种状态的你,即使想要绘制常规直角坐标图之外的复杂图形,如:关系图、漏斗图、地理图,也根本不是问题。绘制这些复杂图形你只需要根据官方文档,把数据处理成需要的格式,放入对应位置即可生成图形。然后再整理好属于你自己的个性化设置,就能得到专属于你的图表了!

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


腾讯课堂课程二维码








            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐

使用Python制作自动聊天机器人  

fillin一下,平衡回来~

order命令——快速改变变量顺序的利器 Ajax应用场景——以获取雪球网港股代码及公司名称为例

播放列表中的歌单排行 

在Stata中轻松运用program编写命令

Meta Analysis in Stata17      

芒果TV视频弹幕爬取之《我在他乡挺好的》

Stata中的判断神器——confirm命令

cngdf——名义GDP与实际GDP之间的摆渡船

最近《扫黑风暴》有点火爆!我从豆瓣评论中发现了这些……

随机森林-Random Forest 

复原之神--preserve&restore

合并,“纵”享新丝滑:frameappend & xframeappend
什么是全局配置项?|从零开始的Pyecharts(二)帮你拿下数据可视化|从零开始的Pyecharts 

Stata助力疫情打卡管理——是谁没有接龙呢?

这十年,《金融研究》的编委和读者偏爱哪些研究话题和文章?

【案例展示】Python与数据库交互

学好这一手,英语词典常在手 

玩转Stata中的数学函数

用spmap看中国空气质量

戳穿围城面具:安利&劝退一个专业

走进图文并茂的攻略世界 

玩转word文档“大变身”——wordconvert

数据读入|一文读懂用Stata读入不同类型的数据

简述递归

OpenCV库——轻松更换证件照背景色

800万年薪!还有谁?!

千古伤心词人,词伤几何?

去哪儿网攻略爬取——跟我一起去大理吧

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。



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

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