15 可视化 | Python精美地图动态展示近20年全国各省市GDP

大家好,我是欧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'等。

4. 源码+数据

下载资源