Python绘制数据地图

时间:2022-07-23
本文章向大家介绍Python绘制数据地图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

概述

做一个绘制地图的推文很久之前就想过,后来由于记性不好就忘了。还记得疫情初始,各大平台推出的疫情分布图,当时就想着动手做一下,本文就是简单做着玩一下,里面的数据是随便输入的(无实际意义),只是为了学习下里面的模块。

实现模块

主要用到的新的Python模块是Geopandas,就是利用他来绘制数据地图的,具体说明可以参看https://geopandas.org/。

Geopandas 好就好在它自带了一副世界地图,具体绘制过程中不需要依赖其他的地图文件。

具体实现

1、导入地图

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

此时你会发现该地图并不友好,因此需要做以下操作:

a.除去南极洲

b.转换投影方式

world = world[world.continent != 'Antarctica']
world = world.to_crs("EPSG:3395")

2、导入数据

绘制的地图为数据地图,导入数据是必然的。导入数据,并将他们存在DataFrame中。

country_number = {'United States of America': 1385834,
                  'Italy': 219814,
                  'Spain': 268143,
                  'China': 81470,
                  ......
                  }
df_country_number = pd.DataFrame(country_number.items(), columns=['name', 'number'])

3、基本的数据匹配处理

a.数据匹配

b.缺省值处理

world = pd.merge(world, df_country_number, on='name', how='left')
world['number'] = world['number'].fillna(0).astype('int')

4、绘制数据地图

几句话就可以直接绘制

fig, ax = plt.subplots(figsize=(15, 10), dpi=200)
world.plot(ax=ax,
           linewidth=0.2, edgecolor='gray',
           column='number', cmap='Reds',
           legend=True)

实现效果

1、除去南极洲

a.除去之前

b.除去之后

2、投影方式转换

a.转换前

b.转换后

3、最终效果

总结

绘制该种数据地图可以应用与各种场景,只需要更改数据就行。