由于我国省份较多,把数据放在地图上展示会更加清晰,故本文用Python中的pyecharts库进行人口分布和迁移绘图展示。
安装pyecharts库
Geo和Map模块主要函数
用Geo模块绘制人口分布图
3.1 导入我国各省人口数据
3.2 在地图上展示各省人口数据涟漪图
3.3 在地图上展示各省人口数据热力图
用Map模块绘制人口分布图
全国各省人口流入广东动态轨迹图
5.1 导入我国各省人口迁移数据
5.2 绘制人口流入广东动态轨迹图

pip3 install pyecharts

[1] render():通过render函数将制作完成的图表输出为html文件,可在括号中传递输出地址参数,将html文件保存到自定义的位置。
[2] add_schema():控制地图类型,设置背景和边界颜色等。
[3] add():添加图表名称、传入数据、选择图类型等。
[4] set_series_opts():系列配置项,可配置文字样式、标签样式等。
[5] set_gloal_opts():全局配置项,可配置标题、动画、颜色等。
[6] render_notebook():在notebook中显示制作完成的图表。
[7] add_coordinate():新增一个坐标点。
[8] add_coordinate_json():以json形式新增多个坐标点。
[9] get_coordinate():根据地点查询对应坐标。

由于各省人口数量不均匀,可在地图上展示各省人口数量,分析我国人口相对较多和较少的省份是哪些。
1 导入我国各省人口数据
import osimport pandas as pd#导入库os.chdir(r'F:\公众号\12.人口数据')#设置文件数据存放目录date = pd.read_csv('各省人口数.csv', encoding='GBK')#导入数据

from pyecharts.charts import Mapfrom pyecharts.charts import Geofrom pyecharts import options as optsfrom pyecharts.globals import ChartType#导入库geo = Geo()geo.add_schema(maptype='china', itemstyle_opts=opts.ItemStyleOpts(color='r', border_color='#FFFFFF'))#设置地图类型,背景和边界颜色geo.add("geo", date[['省份','人口数(万)']].values.tolist(), type_=ChartType.EFFECT_SCATTER)#添加图表类型,传入数据等geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))#系列配置项,忽略标签geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=[{"min":0, "max":1000, "label":"0-1000万", "color":"white"},{"min":1001, "max":3000, "label":"1001-3000万", "color":"cyan"},{"min":3001, "max":5000, "label":"3001-5000万", "color":"green"},{"min":5001, "max":8000, "label":"5001-8000万", "color":"yellow"},{"min":8001, "max":12000, "label":"8001-12000万", "color":"blue"}]),title_opts=opts.TitleOpts(title="全国各省人口分布"),)#全局配置项,设置动画、颜色、标题等geo.render("各省人口数3.html")#把制作完成的图表输出为html文件
如果想直接在notbook中展示地图数据,可把geo.render()函数换成geo.render_notebook()即可。
由图一知,如果把中国地图看成一只公鸡,人口相对较多的地方主要集中在鸡胸和鸡肚子区域。
3 在地图上展示各省人口数据热力图
#人口分布热力图import osimport pandas as pdfrom pyecharts.charts import Mapfrom pyecharts.charts import Geofrom pyecharts import options as optsfrom pyecharts.globals import ChartType#导入库os.chdir(r'F:\公众号\12.人口数据')#设置文件数据存放目录date = pd.read_csv('各省人口数.csv', encoding='GBK')#导入数据geo = Geo()geo.add_schema(maptype='china', itemstyle_opts=opts.ItemStyleOpts(color='r', border_color='#FFFFFF'), label_opts=opts.LabelOpts(is_show=True))#设置地图类型,背景和边界颜色geo.add("", date[['省份','人口数(万)']].values.tolist(), type_=ChartType.HEATMAP)#添加图表类型,传入数据等geo.set_series_opts(label_opts=opts.LabelOpts(is_show=True))#系列配置项,忽略标签geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title="全国各省人口分布热力图",subtitle="数据来源:中国统计年鉴(万人)",pos_right="center",pos_top="5%"),)#全局配置项,设置动画、颜色、标题等geo.render("各省人口数热力图.html")#把制作完成的图表输出为html文件#geo.render_notebook()# 显示地图
图二 全国各省人口分布热力图

#map地图import osimport pandas as pdfrom pyecharts.charts import Mapfrom pyecharts.charts import Geofrom pyecharts import options as optsfrom pyecharts.globals import ChartTypeos.chdir(r'F:\公众号\12.人口数据')date = pd.read_csv('各省人口数.csv', encoding='GBK')map = Map()map.add("", date[['省份','人口数(万)']].values.tolist(), "china")map.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=[{"min":0, "max":1000, "label":"0-1000万", "color":"white"},{"min":1001, "max":3000, "label":"1001-3000万", "color":"cyan"},{"min":3001, "max":5000, "label":"3001-5000万", "color":"green"},{"min":5001, "max":8000, "label":"5001-8000万", "color":"yellow"},{"min":8001, "max":12000, "label":"8001-12000万", "color":"blue"}]),title_opts=opts.TitleOpts(title="全国各省人口分布",subtitle="数据来源:中国统计年鉴(万人)",pos_right="center",pos_top="5%"),)#全局配置项,设置动画、颜色、标题等map.render("各省人口数map.html")
图三 全国各省人口分布

1 导入我国各省人口迁移数据
import osimport pandas as pd#导入库os.chdir(r'F:\公众号\12.人口数据')#设置文件数据存放目录date = pd.read_csv('人口迁移数据.csv', encoding='GBK')#导入数据

2 绘制人口流入广东动态轨迹图
#mdate = date[date['count']>100000]sdate = date[date['to']=='广东']#挑选人口流入地为广州CurrentConfig.ONLINE_HOST = 'F:/公众号/12.人口数据/pyecharts-assets-master/assets/'#设置pyecharts-assets-master下载路径c = (Geo().add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="white"),label_opts=opts.LabelOpts(is_show=True))#设置地图类型,背景和边界颜色.add("",sdate[['from','count']].values.tolist(),type_=ChartType.EFFECT_SCATTER,color="white",)#添加图表类型,点的颜色等.add("",sdate[['from','to']].values.tolist(),type_=ChartType.LINES,effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="white"),linestyle_opts=opts.LineStyleOpts(curve=0.2), # 轨迹线弯曲度)#添加图表类型,符号类型、大小、颜色等.set_series_opts(label_opts=opts.LabelOpts(is_show=False))#系列配置项,忽略标签.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=[{"min":0, "max":1000, "label":"0-1000", "color":"white"},{"min":1001, "max":5000, "label":"1001-5000", "color":"cyan"},{"min":5001, "max":10000, "label":"5001-10000", "color":"green"},{"min":10001, "max":50000, "label":"10001-50000", "color":"yellow"},{"min":50001, "max":100000, "label":"50001-100000", "color":"blue"},{"min":100001, "max":500000, "label":"100001-5000000", "color":"blue"}]),title_opts=opts.TitleOpts(title="流入广东人口分布",pos_right="center",pos_top="5%"))#全局配置项,设置动画、颜色、标题等.render("流入广东人口分布.html")#把制作完成的图表输出为html文件)
由图四知,流入广东人口最多的省份是广西、湖南、四川,流入人口相对较多的省份和地理位置也有一定的关系。
至此,在Python中用Geo和Map模块绘图已全部讲解完毕,感兴趣的同学可以自己实现一遍
。


扫一扫关注我
19967879837
投稿微信号、手机号
原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。