用Python繪制中國(guó)地圖

來(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é)果

1.png
2.png
  1. 創(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()

3.png

如果打算增加海岸線榜轿,只需增加 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()

4.png

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()

5.png

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()

6.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甸私,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子飞傀,更是在濱河造成了極大的恐慌皇型,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件助析,死亡現(xiàn)場(chǎng)離奇詭異犀被,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)外冀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)寡键,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人雪隧,你說(shuō)我怎么就攤上這事西轩。” “怎么了脑沿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵藕畔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我庄拇,道長(zhǎng)注服,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任措近,我火速辦了婚禮溶弟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞭郑。我一直安慰自己辜御,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布屈张。 她就那樣靜靜地躺著擒权,像睡著了一般袱巨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碳抄,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天愉老,我揣著相機(jī)與錄音,去河邊找鬼纳鼎。 笑死俺夕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贱鄙。 我是一名探鬼主播劝贸,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逗宁!你這毒婦竟也來(lái)了映九?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞎颗,失蹤者是張志新(化名)和其女友劉穎件甥,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哼拔,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡引有,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倦逐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片譬正。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖檬姥,靈堂內(nèi)的尸體忽然破棺而出曾我,到底是詐尸還是另有隱情,我是刑警寧澤健民,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布抒巢,位于F島的核電站,受9級(jí)特大地震影響秉犹,放射性物質(zhì)發(fā)生泄漏蛉谜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一崇堵、第九天 我趴在偏房一處隱蔽的房頂上張望型诚。 院中可真熱鬧,春花似錦筑辨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)暮现。三九已至,卻和暖如春楚昭,著一層夾襖步出監(jiān)牢的瞬間栖袋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工抚太, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塘幅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓尿贫,卻偏偏與公主長(zhǎng)得像电媳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庆亡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容