Geopandas是python强大的库,利用它结合matplotlib可以地理数据展示和分析。
一、利用内置的地图绘制世界地图
Geopandas内置地图文件naturalearth_lowres,读取它可以进行地图绘制。
import geopandas as gp
import matplotlib.pyplot as plt
world = gp.read_file(gp.datasets.get_path('naturalearth_lowres'))
world.plot()
plt.show()
二、利用外部的geojson文件绘制数据地图
(一) 绘制分层填色分布地图
从网站(网址为:
http://datav.aliyun.com/tools/atlas/#&lat=33.521903996156105&lng=104.29849999999999&zoom=3)下载geojson中国地图数据。
用以下代码导入中国地图数据,并且导出CSV文件各省市名称。
import geopandas as pd
china=gp.read_file("d:/中华人民共和国.json")
ss= china["name"]
ss.to_csv("d:/name.csv")
从网上找到各省市2020的GDP数据(如国家统计局网站),并且填入name.csv文件里。准备好数据之后,就可以调用准备好的数据绘制分层填色分布地图。
import geopandas as gp
import matplotlib.pyplot as plt
import pandas as pd
#读入GDP数据
data=pd.read_csv("d:/name.csv",encoding="gb18030")
#读入地图数据
china=gp.read_file("d:/中华人民共和国.json")
#读入国界地图数据
chinadata=gp.read_file("d:/中华人民共和国1.json")
boundary=chinadata.iloc[4:5,:]
#合并地图数据和GDP数据
mchina=pd.merge(china,data)
fig, ax = plt.subplots(1, 1)
#绘制分层分布图
mchina.plot(column='gdp',ax=ax,legend=True)
boundary.plot(ax=ax,edgecolor="red")
plt.show()
(二) 绘制bubble地图
import geopandas as gp
import matplotlib.pyplot as plt
import pandas as pd
#读入GDP数据
data=pd.read_csv("d:/name.csv",encoding="gb18030")
#读入地图数据
china=gp.read_file("d:/中华人民共和国.json")
#读入国界地图数据
chinadata=gp.read_file("d:/中华人民共和国1.json")
boundary=chinadata.iloc[4:5,:]
fig, ax = plt.subplots(1, 1)
china.plot(ax=ax,facecolor='white',edgecolor='grey')
ax.scatter(china.centroid.x,china.centroid.y,s=data['gdp']/1000,color='green')
boundary.plot(ax=ax,edgecolor="red")
plt.show()