查看原文
其他

数据可视化之地理图

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

本文作者:钱梦璇

文字编辑:孙晓玲

技术总编:张   邯


爬虫俱乐部将于2020年1月5日至11日湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~详细培训大纲及报名方式,请点击《爬虫俱乐部2020第一期Stata编程训练营开始报名啦!》或点击文末阅读原文呦~


之前学习了柱状图、饼图、折线图、动态散点图等直角坐标系图表,今天开辟新领域—地理图。接下来,展示一个全国地图的实例。
 
基本绘制
from example.commons import Faker # 调用官方提供的测试数据from pyecharts import options asopts # 配置入口模块from pyecharts.charts import Map # 地图构造方法Map_China = ( Map() .add("",[list(z) for z in zip(Faker.provinces,Faker.values())],"china") .set_global_opts(title_opts=opts.TitleOpts(title="中国地图",pos_left="center")) )Map_China.render_notebook() #直接在notebook中渲染
Faker是官方提供的测试数据包,地图的构造方法和之前介绍的几个图形方法一样。在add选项中,“”为空表示没有添加图例项,数据项中zip元组内元素分别为省份和对应的数值,最后的列表形式如[(广东,109),(浙江,77)],"china"表示地图类型为中国地图。一般的地图中,标题居中会更为美观,故在标题项中,利用pos_left="center"将标题设为居中。
 
渲染图形如下所示:


添加视觉映射

数据可视化就是数据到视觉元素的映射过程,pyecharts的各种图标都内置这种映射过程,如柱状图将数据映射到长度。除此之外,pyecharts还提供了视觉映射配置项VisualMapOpts来专门提供通用的视觉映射,比如组件颜色,组件距离,是否分段等等。那这个组件到底长什么样呢? 

在全局项设置中增加视觉映射配置项:
Map_China.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=200,pos_left="15%",pos_bottom="10%",is_piecewise=False))
max_=200表示visualMap组件离容器右侧距离的最大值;pos_left和pos_bottom分别设置了组件距离容器左侧和底部的距离;is_piecewise设定是否为分段型。添加组件后的图形如下所示:

如果is_piecewise=True为分段型,则组件如下所示:

当然,也可以自定义每一段的范围和文字以及特别的样式。我们自定义几个简单的数据来介绍:
data=[("湖南",1),("广东",2),("江苏",3),("北京",4)] Map_China = ( Map() .add("",data,"china") .set_global_opts( title_opts=opts.TitleOpts(title="中国地图",pos_left="center"), visualmap_opts=opts.VisualMapOpts( pos_left="10%", pos_bottom="10%", is_piecewise=True, pieces=[ # 自定义分段名称和颜色 {"value":"1", "label": "A", "color":"red"}, {"value":"2", "label": "B", "color":"orange"}, {"value":"3", "label": "C", "color":"blue"}, {"value":"4", "label": "D", "color":"green"} ] ) ) )Map_China.render_notebook()

注意,data中每个省份对应的数值1~4与视觉映射配置项pieces中的value值是一一对应的,label表示分段名称,color表示颜色。所以,{"value":"1", "label": "A", "color":"red"}就表明湖南省的填充颜色为红色,相对于的分段名为A。如下所示:


世界地图
改变地图类型为"world"世界地图,并将视觉映射组件设置为分段型:
from example.commons import Faker from pyecharts import options asopts from pyecharts.charts import Mapdef map_world(): c = ( Map() .add("", [list(z) for z in zip(Faker.country,Faker.values())], "world") .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( title_opts=opts.TitleOpts(title="世界地图",pos_left="center"), visualmap_opts=opts.VisualMapOpts(max_=200,pos_left="10%",pos_bottom="10%",is_piecewise=True) ) ) return cmap_world().render(r'E:\世界地图.html')    
图形如下所示:




广东地图
改变地图类型为"广东"省地图:
from example.commons import Faker from pyecharts import options asopts from pyecharts.charts import Mapdef map_guangdong(): c = ( Map() .add("", [list(z) for z in zip(Faker.guangdong_city,Faker.values())], "广东") .set_global_opts( title_opts=opts.TitleOpts(title="广东地图",pos_left="center"), visualmap_opts=opts.VisualMapOpts(max_=200,pos_left="15%",pos_bottom="10%") ) ) return cmap_guangdong().render(r'E:\python小组学习\pyecharts学习\广东地图.html')
图形如下所示:

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

“气功”研究哪家强

数据长、宽整型之另辟蹊径

10分钟带你走进宝藏数据库BvD

实战演练——爱婴医院中莆田系医院数据分析(一)

给你一个贴心的reshape应用

asrol命令——让你的描述性统计信息滚动起来
Python带你看文献—xpath抓取知网文献
您有一份天气预报待签收 
听说会Stata的人,数学不会太差?
批量修改路径
妙用正则表达式--Python中的re模块
豆瓣电影评分之数据爬取与可视化的实现 
为了辅导作业,这位家长竟然...
走进列表的世界——列表方法(二)
走进列表的世界——列表方法(一)
朝花夕拾|长宽数据转换——reshape命令
Stata有音乐包啦!

关于我们

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

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

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

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