查看原文
其他

技能篇 | 图片合并大法

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

本文作者:石   艳,中南财经政法大学统计与数学学院

本文编辑:尚晨曦

技术总编:王子一

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

 导 读 


想要从海量数据中发现一定的规律,最直观的方法就是进行图表展示。最常见的图包括条形图、折线图、饼图、箱线图等,若说对每类图形的熟悉程度和作图方法,大家可能会信心满满,但是如果想要将多个不同类型的图汇总到一个页面可能会“让人头大”,今天的内容就借助pyecharts来帮助大家实现多图汇总的功能。

具体介绍

所谓多图汇总,当然至少两个图形起步啦!我们就以之前获取的2020年各省GDP数据为例(回复“GDP”即可获得哦~),先进行条形图(Bar)和地图(Map)的制作,再将两张图表进行组合汇总。

在进行作图之前,先将使用的包进行导入以做准备。

1import pandas as pd
2import numpy as np
3from pyecharts import options as opts
4from pyecharts.charts import Map,Line,Bar,Page,Pie
5from pyecharts.globals import ThemeType
6from pyecharts.commons.utils import JsCode # 设置背景图片
  • 01 pyecharts画条形图

关于条形图,我们选择的数据是2010-2020年湖北省GDP的相关数据。作图过程如下:

1data1 = pd.read_excel('./2010-2020年湖北省GDP.xlsx')
2data1

1bar = (
2    Bar(init_opts=opts.InitOpts(width="800px", height="500px",theme='light'))  # 设置图表大小
3    .add_xaxis(data1['year'].tolist())   # 设置柱形图的x轴, 必须写.tolist()
4    .add_yaxis(
5        series_name="GDP(亿元)",  # y轴系列名称
6        y_axis=data1['GDP(亿元)'].tolist(),   # y轴取值
7        label_opts=opts.LabelOpts(is_show=True,position='top',formatter="{c}"),# 数字标签显示样式
8        itemstyle_opts=opts.ItemStyleOpts(color="#51c4d3",opacity=1),     # 柱形图颜色  ,透明度
9        )
10        .set_global_opts(
11            title_opts=opts.TitleOpts(title="2010-2020年湖北省GDP",  # 主标题
12                                      subtitle="",   #副标题
13                                      pos_top='5%',
14                                      title_textstyle_opts=opts.TextStyleOpts(font_size=15,color='black'),
15                                      pos_left='center'),  # 位置
16            tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),  # 鼠标交叉十字显示
17            legend_opts=opts.LegendOpts(is_show=True,pos_top="bottom"),  # 图例
18            yaxis_opts=opts.AxisOpts(                     # 显示y轴网格线
19                is_show=False,
20                type_="value",
21                axistick_opts=opts.AxisTickOpts(is_show=False),   # 坐标轴商的刻度是否显示
22                axisline_opts=opts.AxisLineOpts(is_show=False), # y轴线
23                splitline_opts=opts.SplitLineOpts(is_show=True),   # y轴网格线是否显示
24        ))
25    .set_series_opts(
26        label_opts=opts.LabelOpts(is_show=False),
27            #插入平均值线
28        markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="平均值"),]),
29            #插入最大值最小值点
30        markpoint_opts=opts.MarkPointOpts(data=[
31                opts.MarkPointItem(type_="max", name="最大值"),
32                opts.MarkPointItem(type_="min", name="最小值"),
33            ]))
34)
35# bar.render('2010-2020年湖北省GDP.html') # 可以保存为一个html文件,打开此文件可进行交互操作
36bar.render_notebook()

图形如下:

从图中可以清楚地观察到湖北省GDP在2020年之前是逐年递增的,在2019年达到最高值45429亿元,由于2020年疫情的爆发使得湖北省GDP有所下降,当年GDP增速为-5%,这十一年的平均GDP为31291.53亿元。

  • 02 pyecharts画地图

关于地图,我们使用的数据为2020年各省GDP。作图过程如下:

1data2 = pd.read_excel('./2020年各省GDP.xlsx')
2data2

1map2 = (
2    Map(init_opts=opts.InitOpts(width="800px", height="700px",theme='light'))  # 设置图表大小 主题风格 ThemeType.LIGHT  Dark ,theme='vintage'
3    .add("省份"# 系列名称
4         [list(z) for z in zip(data2['province'], data2['2020年GDP(亿元)'])], # 数据
5         "china",  # 地图
6         is_map_symbol_show=False# 不显示小红点
7        )
8
9    .set_global_opts(
10        title_opts=opts.TitleOpts(title="2020年各省GDP",  # 图表标题
11                                  title_textstyle_opts=opts.TextStyleOpts(font_size=15, color='black'), #字体大小和颜色  
12                                  pos_left='center'# 标题位置
13                                  pos_top='15%'), 
14        legend_opts=opts.LegendOpts(is_show=False), # 图例是否显示
15        visualmap_opts=opts.VisualMapOpts(min_ = 1903# 根据实际数据进行最大值和最小值的设置以及后面的分段
16                                          max_ =110762,
17                                          is_piecewise=True# 是否为分段型
18                                          pieces=[
19                                                  {"max"13599"min"1910,},
20                                                  {"max"23299"min":13600, },
21                                                  {"max"53999"min"23300, },
22                                                  {"max"110762"min"54000, },
23
24                                              ],
25
26                                          split_number=4,  # 分多少段
27                                          range_text=['亿元',''], # 上下显示的文字
28                                          range_color=["#d9ecf2","#a2d5f2","#51adcf","#0278ae"],#颜色
29                                          pos_left='20%',
30                                          pos_top='70%',
31                                         ),
32    ))
33# map2.render("./2020年各省GDP.html") # 可以保存为一个html文件
34map2.render_notebook()

地图展示如下:

地图中的颜色越深,代表GDP数值越大。从中也可以发现沿海地区的省份GDP普遍较高,而西部和东北地区GDP较低,需要加大对这些地区的发展力度。

  • 03 图形的汇总和组合

在进行了以上两类图形的绘制后,现在就该想办法把这两张图片组合到一个页面上了,首先想到的可能是先下载图片,再拼接。不过我们今天介绍一种“高大上”的组合方法,它可以让你随心所欲的调节图片位置,达到自己满意的展示效果。
以上面完成的两张图片为基础,进行接下来的过程:
1page = Page(layout=Page.DraggablePageLayout)
2page.add(bar,map2)
3page.render("2020年各省GDP分布图.html")

这时候打开保存好的"2020年各省GDP分布.html"文件,大概是这个样子:

这个时候就可以发挥自己的才能随意排列组合啦,鉴于此处只有两张图片,就稍微移动一下展示一下效果。确定调整后,可以点击最上方的Save Config的按钮,这时会下载一个json文件,再用这个文件“格式化”你的page并保存,大家就可以根据自己的要求实现简洁美观的效果图!

1Page.save_resize_html("2020年各省GDP分布图.html"
2                      cfg_file="D:/谷歌下载/chart_config.json"
3                      dest="2020年各省GDP分布_re2.html")

以上就是今天介绍的主要内容啦,大家赶快动手试试吧!

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

欢迎大家点赞、评论、转发呦~


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

往期推文推荐 

 批量空气质量数据文件合并分析

 Stata17之日期时间新功能

 Stata17之Lasso新功能

       爱奇艺视频弹幕爬取之《小舍得》        数据可视化利器——Matplotlib

从第七次人口普查看中国人口变化|Stata与Python交互绘图

 200万投资者关注!!哪家公司这么牛?

 
带你领略一天天气之变化

 利用pyecharts看微博粉丝地区分布

 零值太多怎么办?解锁Stata17新命令ziologit

  Stata17新功能之Python API 小罗肥归升级啦|解锁Stata17之新命令xtmlogit 
速度大比拼之Stata17有多快?

初识PyStata

辞旧迎新——Stata17之Do-file编辑器优化

Stata17新亮点——解放表格输出生产力

【爬虫+可视化】链家网北京租房信息

 手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

关于我们 


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



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

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

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

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