大家好,我是早起。
在matplotlib中,製作地理圖表需要依賴一些第三方庫,比如basemap、geopandas等,本文將基於geopandas講解如何製作早起Python年度報告中的地圖。
首先我們需要使用pip install geopandas安裝,理論上直接pip就能成功安裝,如果出現了一些錯誤請自行查找解決。
在搞定了相關依賴庫之後,我們進入notebook,先導入相關庫
import pandas as pd
import numpy as np
import geopandas as gp
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 100
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']之後讀取數據,首先讀取需要可視化的數據
data = pd.read_csv('map.csv')注意,在看別人的教程時一定要注意他的數據格式,比如我的數據如下,一列省份名稱一列關注人數
之後我們使用 geopandas讀取地理坐標
cn_map = gp.GeoDataFrame.from_file('bou2_4p.shp', encoding = 'gb18030') #讀取坐標這裡的bou2_4p.shp是本地文件,同時該目錄下必須還有bou2_4p.dbf和bou2_4p.shx兩個文件才能讀取成功!
這個看上去像是pandas中dataframe結構的數據,是geopandas中的數據結構,下一步,我們需要對數據進行合併,將粉絲數添加進來
data_gp = gp.GeoDataFrame(data)#轉換數據格式
cn_map = cn_map.rename(index = str, columns = {'NAME':'省份'})
data1 = cn_map.merge(data_gp, on = '省份', how = 'left')大家要注意數據的變化,下面就是我們熟悉的matplotlib部分
fig, ax = plt.subplots(figsize=(9,6),dpi = 100)
data1.plot('粉絲數',ax = ax)
plt.show()當然這個默認樣式不夠好看,我們先把xy軸刻度顯示取消了
ax.set_xticks([])
ax.set_yticks([])再換個主題並添加colorbar,只需要設置legend = True添加顏色條,和cmap設置配色,這個cmap後面我們還會深入講解!
divider = make_axes_locatable(ax)
cax = divider.append_axes("left", size="4%", pad=0.5)
data1.plot('粉絲數',ax = ax,cmap=plt.cm.GnBu,legend = True, cax=cax, edgecolor="black",linewidth = 0.8)這樣就使用matplotlib做出來一幅還不錯的中國地圖!
關於geopandas後續我還會更新更多的基礎系列講解,本文算是一個簡單的應用,如果你想做出這樣一幅地圖,只需要在後臺回復「地圖」獲取GitHub地址,下載源碼、替換數據即可!
注意,在本文中我一直提示大家關注數據,因為你沒法復現別人的代碼時,大多情況是你的數據和對方的不匹配。
代碼是容易理解的,所以類似這種教程,你需要格外關注別人的原始數據是什麼形狀以及如何對數據進行處理的,方能復現!