本篇文章為大家展示了使用Python怎么繪制一個中國地圖,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
Jupyter
首先,第一神器是Jupyter。如果你是第一次使用,可能搞不清楚它的開發(fā)者做這么個鬼東西出來干什么,說它是博客系統(tǒng)也不像,說它是web服務(wù)器也不像,但它就是有用。因為我們傳統(tǒng)的web開發(fā)首先想的就是面向公眾,你做一個服務(wù)器就是要服務(wù)成千上萬瀏覽器的,當(dāng)然Jupyter也可以服務(wù)眾多瀏覽器,但它更多的還是方便研究人員,對研究人員來說簡直是太方便了,你把代碼像寫文章一樣直接寫在輸入框里,然后在本頁面直接就看到了這個代碼的結(jié)果,隨時修改,隨時展現(xiàn),文碼混排,是Markdown的一個增強(qiáng)版,畢竟Markdown還只能顯示文字,最多再加上一些圖片,而Jupyter是可以直接運行Python代碼的。當(dāng)然,也有些人試圖在Jupyter里運行PHP或Java代碼,但顯然成不了氣候。因為Python這個語言天生就是腳本語言,可能將來唯一有希望往里移植的就是Javascript,這貨也是一個腳本語言。腳本語言的好處就是不用編譯,一行一個結(jié)果。縱觀計算機(jī)語言發(fā)展歷史,就是一個從繁到簡的過程,C語言需要編譯+鏈接才能運行,Java只要javac一下,把編譯和鏈接合二為一,PHP更簡單,直接運行就行了,連編譯都省了。但是還不夠直接,因為還要編寫一個.php文件存盤,然后才能運行,到了Python以及其它腳本語言這里,可以直接在殼里運行,但大的問題是運行可以運行,無法保存,要保存就又要跟傳統(tǒng)方式一樣,找個編輯器來,或者vi,存成文件以后才可以運行。Jupyter大的優(yōu)點就是:它本身還是一個外殼環(huán)境,可以運行腳本,但同時也幫你自動把這些腳本代碼保存了下來,不但保存腳本代碼,并且你插在腳本代碼當(dāng)中的所有注釋不是普通注釋,而是各種格式化的Markdown都一并幫你保存下來,并且可以隨時修改。所以它兼具了腳本外殼和文件管理系統(tǒng)的優(yōu)點,從此你開發(fā)Python代碼再也不用先在IDE里寫好代碼,然后再到終端里去運行,而直接在一個web頁面上就全部搞定了。Java有這樣的工具嗎?PHP有這樣的工具嗎?沒有,所以我們必須選擇Python。
Pandas
第二神器是Pandas。如果我讓你讀取一個csv文件,然后求每一列數(shù)據(jù)的平均值,大值,最小值,方差,用Java或PHP怎么做?你首先要fopen一個文件,然后一行一行讀進(jìn)來,再給它整個數(shù)據(jù)結(jié)構(gòu),然后弄個循環(huán)計算,最后你可能還要fclose這個文件??傊a一坨,麻煩死。而Python語言因為有Pandas這個神器,一行代碼搞定:
df = pd.read_csv('a.csv')
行了,從此以后,df就是這個DataFrame,它本身就是一個強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),也可以把它理解成mysql數(shù)據(jù)庫中的一張表吧,各種增刪改查,求總和,求平均都是一行代碼的事情。所以有這樣強(qiáng)大的庫,研究人員有什么理由選擇Java?
scikit-learn
第三神器scikit-learn,一般縮寫為sclearn,各種機(jī)器學(xué)習(xí)算法,基本上只要你能想得到的,線性回歸,邏輯回歸,SVM,隨機(jī)森林,最近鄰居等等等等,各種算法全部在這里面,簡而言之,只有你想不到,沒有它做不到,不詳述。所以這就是為什么玩機(jī)器學(xué)習(xí)必選Python的原因,你給我找一個Java或者PHP有這樣多種算法的庫來?
matplotlib
第四神器是matplotlib。如果我讓你根據(jù)上面csv文件里的信息,畫一個圖,用Java該怎么做?你當(dāng)然會去找第三方插件庫,然后又是一通折騰,終于把圖做出來,然后編譯,然后運行。如果我要改配色呢?如果我要求畫地圖呢?如果要畫熱力圖呢?那個麻煩就不是一星半點,而對于matplotlib來說,簡直就是小菜一碟。簡單的直方圖就不說了,下面重點介紹如何用matplotlib配合Basemap畫一個中國地圖。
安裝Basemap
先安裝相應(yīng)的組件。我假定你已經(jīng)都安裝好了Python以及Jupyter等等。如果沒有安裝的話,就去嘗試一下brew install python3和brew install jupyter吧,網(wǎng)上有很多教程。
然后你需要用pip3 install很多我們下面可能需要用到的庫。但是因為我們要用一個叫做Basemap的庫,而這個庫沒有辦法用簡單的pip3 install安裝,所以稍多兩個步驟:
brew install geos pip3 install https://github.com/matplotlib/basemap/archive/v1.1.0.tar.gz
開始畫圖
啟動Jupyter之后,我們還是本著從最簡單的代碼開始。先畫一個世界地圖:
import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap plt.figure(figsize=(16,8)) m = Basemap() m.drawcoastlines() plt.show()
前面兩行引入相應(yīng)的庫,真正的代碼就4行,夠簡單吧。第1行甚至可以不寫,它定義了圖的大小。第2行我們創(chuàng)建一個地圖,第3行把海岸線畫上,第4行顯示這個地圖,就是這樣:
你用Java的4行代碼畫一個地圖出來?
然后我們開始畫上國家,又是1行代碼:
m.drawcountries(linewidth=1.5)
就變成了這樣:
用Java可能嗎?用PHP可能嗎?
如果我們想顯示中國地圖,只需要在創(chuàng)建Basemap時指定一下經(jīng)緯度就行了:
m = Basemap(llcrnrlon=73, llcrnrlat=18, urcrnrlon=135, urcrnrlat=53)
然后就得到了中國地圖:
看上去有點變形,這是因為我們沒有添加任何投影的原因,Basemap提供24種不同的投影方式,你可以自己一個個試一下,比較常用的是蘭勃特投影,我們添加一下:
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
這次終于看上去比較正常了:
我們想加上省的邊界怎么辦呢?Basemap缺省的包里沒有中國的省區(qū),只有美國的州,畢竟是美國人做的嘛。不過好在世界很大,有專門的國際組織干這事,在這里你可以下載全世界任何一個國家的行政區(qū)劃Shape文件,然后我們給它加上:
m.readshapefile('CHN_adm_shp/CHN_adm1', 'states', drawbounds=True)
然后就得到了下圖:
上述內(nèi)容就是使用Python怎么繪制一個中國地圖,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁名稱:使用Python怎么繪制一個中國地圖-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://vcdvsql.cn/article44/ddggee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站收錄、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容