【可视化】用pyecharts绘制我国人口分布
本文旨在利用Python中的pyecharts库对我国人口分布进行分析,并在地图上进行可视化展示。由于我国省份较多,使用地图能够更直观地展示数据。
pyecharts库简介
pyecharts库的地图数据主要来源于两个模块:Map和Geo。
Map模块:主要实现对“世界”、“国家”、“省”、“县市”等行政区域地图的显示。
Geo模块:主要用于实现热力图等功能地图的显示。
安装pyecharts库
pip install pyecharts
Geo和Map模块主要函数
[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():根据地点查询对应坐标。
代码实现
导入相关库
# 导入相关库
import pyecharts
pyecharts.globals._WarningControl.ShowWarning = False
import pandas as pd
from pyecharts.charts import Map
from pyecharts import options as opts
加载数据
df = pd.read_csv(population.csv)
df.head()
数据示例:
绘制地图
'''
导入地图和数据
'''
m1=Map()
m1.add("人口(万人)", [list(z) for z in zip(df.province, df.populat)], "china",is_map_symbol_show=True)
'''
自适应间隔图例
'''
population_data = df['populat']
# 设置图例最大最小值
min_population = 0
max_population = population_data.max()
interval_base = 10 ** (len(str(int(max_population))) - 3)
interval_size = interval_base * ((max_population - min_population) // interval_base // 6 + 1)
pieces = [
{'min': min_population, 'max': min_population + interval_size, 'label': f'{min_population:.0f}-{min_population + interval_size:.0f}万人'},
{'min': min_population + interval_size, 'max': min_population + 2 * interval_size, 'label': f'{min_population + interval_size:.0f}-{min_population + 2 * interval_size:.0f}万人'},
{'min': min_population + 2 * interval_size, 'max': min_population + 3 * interval_size, 'label': f'{min_population + 2 * interval_size:.0f}-{min_population + 3 * interval_size:.0f}万人'},
{'min': min_population + 3 * interval_size, 'max': min_population + 4 * interval_size, 'label': f'{min_population + 3 * interval_size:.0f}-{min_population + 4 * interval_size:.0f}万人'},
{'min': min_population + 4 * interval_size, 'max': min_population + 5 * interval_size, 'label': f'{min_population + 4 * interval_size:.0f}-{min_population + 5 * interval_size:.0f}万人'},
{'min': min_population + 5 * interval_size, 'label': f'{min_population + 5 * interval_size:.0f}以上万人'}
]
'''
全局设置
'''
m1.set_global_opts(
title_opts=opts.TitleOpts('第七次人口普查各省市人口分布'),#设置图标题
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=pieces))#热力图相关设置
m1.render_notebook()
结果展示
如上,直接在notbook中展示地图数据。如果想保存成html文件,只需要把render_notebook()函数,换成render()即可。
欢迎关注我的公众号“AI拾贝”,原创技术文章第一时间推送。后台发送”人口“,自动回复源码和数据。