15 可视化 | Python精美地图动态展示近20年全国各省市GDP
- 可视化系列
- 6天前
- 916热度
- 1评论
大家好,我是欧K~
本期我们利用Python可视化动态展示2001-2019年全国各省市GDP数据,涉及到pandas数据处理、pyechars数据可视化,希望对你有所帮助。
先看看效果:

1. 数据获取
数据来源:国家统计局官网(http://www.stats.gov.cn/)

可在线下载到本地,保存为csv或excel格式,用pandas中的DataFrame进行读取。
import pandas as pd
datas = pd.read_csv('2001-2019各省GDP数据.csv', encoding='gbk')
2. 数据可视化
2.1 2019年各省市GDP柱状图(横向)
默认缩放为横向缩放。
def get_gdp_bar1(datas):
c = (
Bar()
.add_xaxis(datas['地区'].values.tolist())
.add_yaxis('全国各省GDP(亿元)', datas['2019年'].values.tolist())
.set_global_opts(
title_opts=opts.TitleOpts(title='2019年全国各省GDP(亿元)'),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_='inside')],
)
.render('2019年全国各省GDP_Bar1.html')
)

2.2 2019年各省市GDP柱状图(纵向)
调整缩放为纵向缩放。
def get_gdp_bar2(datas):
sort_info = datas.sort_values(by='2019年', ascending=True)
c = (
Bar()
.add_xaxis(sort_info['地区'].values.tolist())
.add_yaxis('全国各省GDP(亿元)', sort_info['2019年'].values.tolist())
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(
title_opts=opts.TitleOpts(title='2019年全国各省GDP(亿元)'),
datazoom_opts=[opts.DataZoomOpts(is_show=True, orient='vertical')],
)
.render('2019年全国各省GDP_Bar2.html')
)

2.3 2019年各省市GDP全国地图
地图显示时注意需要对表格中地区数据做去除后缀处理,即将省、市、自治区等去掉,否则无法显示。
def get_gdp_map1(datas):
datas['地区'].replace(regex=True, inplace=True, to_replace=['省', '市', '维吾尔自治区', '回族自治区', '壮族自治区', '自治区'], value=r'')
map = (
Map()
.add('全国各省GDP(亿元)', datas[['地区', '2019年']].values.tolist(), 'china')
.set_global_opts(
title_opts=opts.TitleOpts(title='2019年全国各省GDP(亿元)'),
visualmap_opts=opts.VisualMapOpts(max_=110000),
)
)
map.render('2019年全国各省GDP_Map.html')

默认图例为colorbar。
2.4 2001-2019年每年各省市GDP轮播图
修改图例(分段)、增加时间序列。
def get_gdp_map2(datas):
datas['地区'].replace(regex=True, inplace=True, to_replace=['省', '市', '维吾尔自治区', '回族自治区', '壮族自治区', '自治区'], value=r'')
tl = Timeline()
# 播放的速度,单位毫秒(ms)
tl.add_schema(play_interval=300, symbol='emptydiamond')
for i in range(2001, 2020):
map0 = (
Map()
.add('全国各省GDP(亿元)', datas[['地区', str(i) + '年']].values.tolist(), 'china')
.set_global_opts(
title_opts=opts.TitleOpts(title='{}年全国各省GDP(亿元)'.format(i)),
visualmap_opts=opts.VisualMapOpts(max_=110000,is_piecewise=True),
)
)
tl.add(map0, '{}年'.format(i))
tl.render('2001-2019年全国各省GDP.html')

symbol参数:标记图形,可根据需要设置'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'等。