日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 默认站点!

默认站点

當(dāng)前位置: 首頁(yè) >

知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...

發(fā)布時(shí)間:2023/12/4 33 豆豆
默认站点 收集整理的這篇文章主要介紹了 知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么是Python

先來(lái)聊聊為什么做數(shù)據(jù)分析一定要用 Python 或 R 語(yǔ)言。編程語(yǔ)言這么多種, Java , PHP 都很成熟,但是為什么在最近熱火的數(shù)據(jù)分析領(lǐng)域,很多人選擇用 Python 語(yǔ)言?

數(shù)據(jù)分析只是一個(gè)需求,理論上來(lái)講,任何語(yǔ)言都可以滿足任何需求,只是麻煩與簡(jiǎn)易之別。 Python 這門語(yǔ)言誕生也相當(dāng)之早,它的第一個(gè)版本是 26 年前發(fā)表的,曾經(jīng)(或者說(shuō)當(dāng)前)也被用于web開發(fā),但是就流行程度來(lái)說(shuō),遠(yuǎn)遠(yuǎn)干不過(guò) Java 和 PHP 。東方不亮西方亮,在與 Java干仗失敗的這20幾年時(shí)光里, Python 練就了一身獨(dú)門武藝,是 Java 和 PHP 遠(yuǎn)遠(yuǎn)不及的(當(dāng)然以后是不是能追得上來(lái),目前還不好說(shuō))。你要說(shuō)做個(gè)博客網(wǎng)站, Python 的特長(zhǎng)不在這里, PHP 和 Java 也是分分鐘的事情。你要說(shuō)做個(gè) BBS 網(wǎng)站,做個(gè)電商網(wǎng)站, PHP 手到擒來(lái)。 Python在這些方面和 Java 或者 PHP 競(jìng)爭(zhēng),基本就是作死的節(jié)奏,雖然也有 django 這樣的框架,但流行程度遠(yuǎn)遠(yuǎn)不及其他語(yǔ)言。但在這些年默默的失敗背后,有一幫研究人員用 Python 干出了一些驚天地泣鬼神的神器,使 Python 在數(shù)據(jù)研究領(lǐng)域做到了除了 R 語(yǔ)言以外基本無(wú)人能及的地步。

Jupyter

首先,第一神器是 Jupyter 。如果你是第一次使用,可能搞不清楚它的開發(fā)者做這么個(gè)鬼東西出來(lái)干什么,說(shuō)它是博客系統(tǒng)也不像,說(shuō)它是web服務(wù)器也不像,但它就是有用。因?yàn)槲覀儌鹘y(tǒng)的web開發(fā)首先想的就是面向公眾,你做一個(gè)服務(wù)器就是要服務(wù)成千上萬(wàn)瀏覽器的,當(dāng)然 Jupyter 也可以服務(wù)眾多瀏覽器,但它更多的還是方便研究人員,對(duì)研究人員來(lái)說(shuō)簡(jiǎn)直是太方便了,你把代碼像寫文章一樣直接寫在輸入框里,然后在本頁(yè)面直接就看到了這個(gè)代碼的結(jié)果,隨時(shí)修改,隨時(shí)展現(xiàn),文碼混排,是 Markdown 的一個(gè)增強(qiáng)版,畢竟 Markdown 還只能顯示文字,最多再加上一些圖片,而 Jupyter 是可以直接運(yùn)行 Python 代碼的。當(dāng)然,也有些人試圖在 Jupyter里運(yùn)行 PHP 或 Java 代碼,但顯然成不了氣候。因?yàn)?Python 這個(gè)語(yǔ)言天生就是腳本語(yǔ)言,可能將來(lái)唯一有希望往里移植的就是 Javascript ,這貨也是一個(gè)腳本語(yǔ)言。腳本語(yǔ)言的好處就是不用編譯,一行一個(gè)結(jié)果。縱觀計(jì)算機(jī)語(yǔ)言發(fā)展歷史,就是一個(gè)從繁到簡(jiǎn)的過(guò)程,C語(yǔ)言需要編譯+鏈接才能運(yùn)行, Java 只要 javac 一下,把編譯和鏈接合二為一, PHP 更簡(jiǎn)單,直接運(yùn)行就行了,連編譯都省了。但是還不夠直接,因?yàn)檫€要編寫一個(gè) .php 文件存盤,然后才能運(yùn)行,到了 Python 以及其它腳本語(yǔ)言這里,可以直接在殼里運(yùn)行,但最大的問(wèn)題是運(yùn)行可以運(yùn)行,無(wú)法保存,要保存就又要跟傳統(tǒng)方式一樣,找個(gè)編輯器來(lái),或者 vi ,存成文件以后才可以運(yùn)行。 Jupyter最大的優(yōu)點(diǎn)就是:它本身還是一個(gè)外殼環(huán)境,可以運(yùn)行腳本,但同時(shí)也幫你自動(dòng)把這些腳本代碼保存了下來(lái),不但保存腳本代碼,并且你插在腳本代碼當(dāng)中的所有注釋不是普通注釋,而是各種格式化的Markdown都一并幫你保存下來(lái),并且可以隨時(shí)修改。所以它兼具了腳本外殼和文件管理系統(tǒng)的優(yōu)點(diǎn),從此你開發(fā)Python代碼再也不用先在IDE里寫好代碼,然后再到終端里去運(yùn)行,而直接在一個(gè)web頁(yè)面上就全部搞定了。Java有這樣的工具嗎?PHP有這樣的工具嗎?沒(méi)有,所以我們必須選擇Python。

Pandas

第二神器是 Pandas。如果我讓你讀取一個(gè)csv文件,然后求每一列數(shù)據(jù)的平均值,最大值,最小值,方差,用Java或PHP怎么做?你首先要fopen 一個(gè)文件,然后一行一行讀進(jìn)來(lái),再給它整個(gè)數(shù)據(jù)結(jié)構(gòu),然后弄個(gè)循環(huán)計(jì)算,最后你可能還要 fclose這個(gè)文件。總之代碼一坨,麻煩死。而Python語(yǔ)言因?yàn)橛蠵andas這個(gè)神器,一行代碼搞定:

scikit-learn

第三神器 scikit-learn,一般縮寫為sclearn,各種機(jī)器學(xué)習(xí)算法,基本上只要你能想得到的,線性回歸,邏輯回歸,SVM,隨機(jī)森林,最近鄰居等等等等,各種算法全部在 這里面 ,簡(jiǎn)而言之,只有你想不到,沒(méi)有它做不到,不詳述。所以這就是為什么玩機(jī)器學(xué)習(xí)必選Python的原因,你給我找一個(gè)Java或者PHP有這樣多種算法的庫(kù)來(lái)?

matplotlib

第四神器是 matplotlib。如果我讓你根據(jù)上面csv文件里的信息,畫一個(gè)圖,用Java

該怎么做?你當(dāng)然會(huì)去找第三方插件庫(kù),然后又是一通折騰,終于把圖做出來(lái),然后編譯,然后運(yùn)行。如果我要改配色呢?如果我要求畫地圖呢?如果要畫熱力圖呢?那個(gè)麻煩就不是一星半點(diǎn),而對(duì)于 matplotlib來(lái)說(shuō),簡(jiǎn)直就是小菜一碟。簡(jiǎn)單的直方圖就不說(shuō)了,下面重點(diǎn)介紹如何用matplotlib配合Basemap畫一個(gè)中國(guó)地圖。

安裝Basemap

先安裝相應(yīng)的組件。我假定你已經(jīng)都安裝好了 Python以及Jupyter等等。如果沒(méi)有安裝的話,就去嘗試一下brew install python3和brew install jupyter吧,網(wǎng)上有很多教程。

然后你需要用pip3 install很多我們下面可能需要用到的庫(kù)。但是因?yàn)槲覀円靡粋€(gè)叫做Basemap的庫(kù),而這個(gè)庫(kù)沒(méi)有辦法用簡(jiǎn)單的pip3 install

安裝,所以稍多兩個(gè)步驟:

brew install geos

開始畫圖

啟動(dòng) Jupyter 之后,我們還是本著從最簡(jiǎn)單的代碼開始。先畫一個(gè)世界地圖:

import matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemapplt.figure(figsize=(16,8))m = Basemap()m.drawcoastlines()plt.show()

前面兩行引入相應(yīng)的庫(kù),真正的代碼就4行,夠簡(jiǎn)單吧。第1行甚至可以不寫,它定義了圖的大小。第2行我們創(chuàng)建一個(gè)地圖,第3行把海岸線畫上,第4行顯示這個(gè)地圖,就是這樣:

你用 Java的4行代碼畫一個(gè)地圖出來(lái)?

然后我們開始畫上國(guó)家,又是1行代碼:

m.drawcountries(linewidth=1.5)

就變成了這樣:

用 Java可能嗎?用PHP可能嗎?如果我們想顯示中國(guó)地圖,只需要在創(chuàng)建Basemap時(shí)指定一下經(jīng)緯度就行了:

然后就得到了中國(guó)地圖:

看上去有點(diǎn)變形,這是因?yàn)槲覀儧](méi)有添加任何投影的原因, Basemap提供24種不同的投影方式,你可以自己一個(gè)個(gè)試一下,比較常用的是蘭勃特投影,我們添加一下:

這次終于看上去比較正常了:

我們想加上省的邊界怎么辦呢?

Basemap缺省的包里沒(méi)有中國(guó)的省區(qū),只有美國(guó)的州,畢竟是美國(guó)人做的嘛。不過(guò)好在世界很大,有專門的國(guó)際組織干這事,在 這里 你可以下載全世界任何一個(gè)國(guó)家的行政區(qū)劃Shape文件,然后我們給它加上:

m.readshapefile('CHN_adm_shp/CHN_adm1', 'states', drawbounds=True)

然后就得到了下圖:

再往后,你還可以往圖上改顏色啦,寫數(shù)字啦,這些就留待你研究吧。總之,我想說(shuō)的是,用 Python畫地圖真的超容易。

最后再為 Java和PHP美言幾句:大家分工不同,Java和PHP雖然做這樣的數(shù)字研究不是很方便,但還是非常適合web開發(fā)的,而Python在這方面并不適合。所以通常的做法是:首先用Python驗(yàn)證算法,經(jīng)過(guò)一系列復(fù)雜的計(jì)算,把算法確定下來(lái)之后,當(dāng)要應(yīng)用到web上的時(shí)候,再用Java或者PHP把最終形成的結(jié)論重寫一遍,這樣就能充分利用各種語(yǔ)言的優(yōu)勢(shì)。

如果你還在入門糾結(jié),如果你還在苦惱怎么入門python!小編有個(gè)建議,可以加小編弄的一個(gè)Python交流基地,大家可以進(jìn)入交流基地:58937142,里面新手入門資料,可以說(shuō)從零到項(xiàng)目實(shí)戰(zhàn),都是可以免費(fèi)獲取的,還有程序員大牛為各位免費(fèi)解答問(wèn)題,熱心腸的小伙伴也是蠻多的。不失為是一個(gè)交流的的好地方,小編在這里邀請(qǐng)大家加入我的大家庭。歡迎你的到來(lái)。一起交流學(xué)習(xí)!共同進(jìn)步!小編等你!

總結(jié)

以上是默认站点為你收集整理的知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得默认站点網(wǎng)站內(nèi)容還不錯(cuò),歡迎將默认站点推薦給好友。