Geopandas是python強(qiáng)大的庫,利用它結(jié)合matplotlib可以地理數(shù)據(jù)展示和分析。
一、利用內(nèi)置的地圖繪制世界地圖
Geopandas內(nèi)置地圖文件naturalearth_lowres,讀取它可以進(jìn)行地圖繪制。
import geopandas as gp
import matplotlib.pyplot as plt
world = gp.read_file(gp.datasets.get_path('naturalearth_lowres'))
world.plot()
plt.show()
二、利用外部的geojson文件繪制數(shù)據(jù)地圖
(一) 繪制分層填色分布地圖
從網(wǎng)站(網(wǎng)址為:
http://datav.aliyun.com/tools/atlas/#&lat=33.521903996156105&lng=104.29849999999999&zoom=3)下載geojson中國地圖數(shù)據(jù)。
用以下代碼導(dǎo)入中國地圖數(shù)據(jù),并且導(dǎo)出CSV文件各省市名稱。
import geopandas as pd
china=gp.read_file("d:/中華人民共和國.json")
ss= china["name"]
ss.to_csv("d:/name.csv")
從網(wǎng)上找到各省市2020的GDP數(shù)據(jù)(如國家統(tǒng)計(jì)局網(wǎng)站),并且填入name.csv文件里。準(zhǔn)備好數(shù)據(jù)之后,就可以調(diào)用準(zhǔn)備好的數(shù)據(jù)繪制分層填色分布地圖。
import geopandas as gp
import matplotlib.pyplot as plt
import pandas as pd
#讀入GDP數(shù)據(jù)
data=pd.read_csv("d:/name.csv",encoding="gb18030")
#讀入地圖數(shù)據(jù)
china=gp.read_file("d:/中華人民共和國.json")
#讀入國界地圖數(shù)據(jù)
chinadata=gp.read_file("d:/中華人民共和國1.json")
boundary=chinadata.iloc[4:5,:]
#合并地圖數(shù)據(jù)和GDP數(shù)據(jù)
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數(shù)據(jù)
data=pd.read_csv("d:/name.csv",encoding="gb18030")
#讀入地圖數(shù)據(jù)
china=gp.read_file("d:/中華人民共和國.json")
#讀入國界地圖數(shù)據(jù)
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()