來(lái)源:由Taotao Tu網(wǎng)絡(luò)整理+修改而得挖帘,所有代碼均可運(yùn)行怜庸。
1.安裝
從https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap網(wǎng)站下載 pyproj 和 basemap 兩個(gè)包的 whl 文件界酒。由于本人電腦使用的是Python3.7 版本烹卒,故下載的whl文件均對(duì)應(yīng)3.7版本楼吃。
在Anaconda prompt界面下喂饥,找到 pyproj 和 basemap 兩個(gè)包的目錄(輸入命令的方式等同于Dos操作系統(tǒng))置尔。
pip install pyproj-2.2.2-cp37-cp37m-win32.whl
pip install basemap-1.2.1-cp37-cp37m-win32.whl
通過(guò)上述命令杠步,既可以安裝好兩個(gè)繪圖相關(guān)包。
2.導(dǎo)入庫(kù)
import matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemapfrommatplotlib.patches import Polygon
3.創(chuàng)建世界平面圖
plt.figure(figsize=(15,7)) #定義圖的大小
map = Basemap() #新建一張世界地圖
map.drawmapboundary(fill_color='aliceblue') #給地球涂上藍(lán)色
map.fillcontinents(color='palegreen',lake_color='green')
map.drawcoastlines() #畫(huà)出海岸線
map.drawcountries(linewidth=1.5) #畫(huà)出國(guó)家或地區(qū)分界線
plt.show() #打開(kāi)窗口顯示運(yùn)行結(jié)果
- 創(chuàng)建世界球形圖并給大地和湖泊加上顏色
plt.figure(figsize=(15,15))#定義圖的大小
m = Basemap(projection='ortho',lat_0=0,lon_0=0)#創(chuàng)建世界地圖并增加投影
m.drawmapboundary(fill_color='aliceblue') #給地球涂上藍(lán)色
m.fillcontinents(color='palegreen',lake_color='green')#給大地和海洋涂上顏色
plt.show()
如果打算增加海岸線榜轿,只需增加 m.drawcoastlines()
plt.figure(figsize=(15,15))#定義圖的大小
m = Basemap(projection='ortho',lat_0=0,lon_0=0)#創(chuàng)建世界地圖并增加投影
m.drawmapboundary(fill_color='aliceblue') #給地球涂上藍(lán)色
m.fillcontinents(color='palegreen',lake_color='green')#給大地和海洋涂上顏色
m.drawcoastlines()#畫(huà)海岸線
plt.show()
5.繪制中國(guó)黑白地圖框架
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
plt.figure(figsize=(16,8))
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
m.drawcoastlines()
m.drawcountries(linewidth=1.5)
plt.show()
6. 繪制中國(guó)地圖
https://gadm.org/download_country_v3.html 從這里下載中國(guó)大陸幽歼、中國(guó)臺(tái)灣、中國(guó)香港和中國(guó)澳門(mén)的地形圖谬盐。
plt.figure(figsize=(16, 17)) # 定義圖的大小
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc',
lat_1=33, lat_2=45, lon_0=100) # 創(chuàng)建中國(guó)地圖
m.drawcountries(linewidth=1.5) # 畫(huà)出中國(guó)地圖
m.drawmapboundary(fill_color='aqua') # 給地球涂上藍(lán)色
m.fillcontinents(color='coral', lake_color='palegreen') # 給大陸和海洋分別涂上顏色
m.drawcoastlines() # 畫(huà)海岸線
給中國(guó)大陸加上金色
m.readshapefile('d:\China\gadm36_CHN_1', 'states', drawbounds=True)
ax = plt.gca()
for nshape, seg in enumerate(m.states):
poly = Polygon(seg, facecolor='gold')
ax.add_patch(poly)
給中國(guó)臺(tái)灣加上金色
m.readshapefile('d:\TWprovince\gadm36_TWN_1', 'taiwan', drawbounds=False)
for nshape, seg in enumerate(m.taiwan):
poly = Polygon(seg, facecolor='gold')
ax.add_patch(poly)
給中國(guó)香港加上金色
m.readshapefile('d:\HongKong\gadm36_HKG_1', 'HongKong', drawbounds=False)
for nshape, seg in enumerate(m.HongKong):
poly = Polygon(seg, facecolor='gold')
ax.add_patch(poly)
給中國(guó)澳門(mén)加上金色
m.readshapefile('d:\Macau\gadm36_MAC_1', 'Macau', drawbounds=False)
for nshape, seg in enumerate(m.Macau):
poly = Polygon(seg, facecolor='gold')
ax.add_patch(poly)
plt.show()
7.分省中國(guó)地圖-A
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
import matplotlib.colors
省份以及對(duì)應(yīng)的數(shù)值
provinceDic = {"安徽":9, "北京":5, "重慶":8,
"福建":7, "甘肅":7, "廣東":5, "廣西":6, "貴州":7,
"海南":6, "河北":8, "黑龍江":8, "河南":9, "湖北":9,
"湖南":9, "江蘇":8, "江西":10, "吉林":7, "遼寧":7,
"內(nèi)蒙古":7, "寧夏":7, "青海":4, "山東":9, "上海":5,
"陜西":8, "山西":8, "四川":8, "天津":7, "新疆":1,
"西藏":3, "云南":7, "浙江":9, "香港":3, "澳門(mén)":2, "臺(tái)灣":2}
顏色
colorDict = {"1":"F6F8FB", "2":"E8ECF4",
"3":"D2DAEA", "4":"BBC8E0", "5":"A5B6D6",
"6":"8EA3CB", "7":"7791C1", "8":"607EB6",
"9":"4A6DAD", "10":"1D4898"}
地圖顯示配置
plt.figure(figsize=(16,8))
m = Basemap()
m.drawcountries(linewidth=1.5)
m.drawcoastlines()
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
讀取中國(guó)大陸shapefile
m.readshapefile('d:\China\gadm36_CHN_1', 'states', drawbounds=True)
讀取臺(tái)灣shapefile
m.readshapefile('d:\TWprovince\gadm36_TWN_1', 'taiwan', drawbounds=False)
讀取香港shapefile
m.readshapefile('d:\HongKong\gadm36_HKG_1', 'HongKong', drawbounds=False)
讀取澳門(mén)shapefile
m.readshapefile('d:\Macau\gadm36_MAC_1', 'Macau', drawbounds=False)
ax = plt.gca()
大陸地區(qū)進(jìn)行上色
for i, shapedict in enumerate(m.states_info):
p = shapedict['NL_NAME_1'].split('|')
s = p[1] if len(p) > 1 else p[0]
for key in provinceDic.keys():
if key in s:
color = '#' + colorDict[str(provinceDic[key])]
ax.add_patch(Polygon(m.states[i], facecolor = color))
臺(tái)灣上色
for nshape, seg in enumerate(m.taiwan):
color = '#' + colorDict['5']
poly = Polygon(seg, facecolor=color)
ax.add_patch(poly)
plt.show()