使用Python實(shí)現(xiàn)繪制地圖的示例詳解
海岸線
cartopy是英國(guó)氣象局開發(fā)的一款用于地理空間數(shù)據(jù)處理的python庫,支持創(chuàng)建并發(fā)布高質(zhì)量地圖,隨著basemap的停止維護(hù),cartopy已成Python中地理繪圖的首選模塊,其最簡(jiǎn)單的地圖即為海岸線的線條圖,示例如下
import cartopy.crs as ccrs import matplotlib.pyplot as plt ax = plt.axes(projection=ccrs.PlateCarree()) ax.coastlines() plt.show()
PlateCarree是可利投影,圓柱投影的原理是將地物投影到圓柱面上再展開,將這種投影作為一種坐標(biāo)映射提供給坐標(biāo)軸,便可得到一個(gè)cartopy定義的坐標(biāo)軸對(duì)象GeoAxes
type(ax) # <class 'cartopy.mpl.geoaxes.GeoAxes'>
GeoAxes顯然繼承自Axes,除了matplotlib中的函數(shù)之外,還封裝了一些用于地圖繪制的函數(shù)。
地形圖
coastlines即海岸線,由此得到的地圖是極致的線條風(fēng)格,光禿禿得什么都沒有,并不好看。通過stock_img函數(shù),可以為地圖添加低分辨率的地形圖背景,示例如下,看上去十分不錯(cuò),但需要注意,這個(gè)圖目前就只有這一張。
ax = plt.axes(projection=ccrs.PlateCarree(180)) ax.stock_img() plt.show()
重載繪圖函數(shù)
matplotlib中提供了非常多的繪圖函數(shù),cartopy對(duì)下列諸圖進(jìn)行了重載,有關(guān)這些圖形的示例,可參考:python35種繪圖函數(shù)總結(jié),3D、統(tǒng)計(jì)、流場(chǎng),實(shí)用性拉滿
繪圖函數(shù) | 圖形類別 |
---|---|
scatter | 散點(diǎn)圖 |
barbs | 風(fēng)場(chǎng)圖 |
quiver | 向量場(chǎng)圖 |
streamplot | 流場(chǎng)圖 |
contour | 等高線 |
contourf | 填充等高線 |
pcolor | 矩陣偽彩圖 |
pcolormesh | 矩陣偽彩圖 |
hexbin | 鉆石圖 |
和Axes中的繪圖函數(shù)相比,這些重載后的方法普遍添加了transform參數(shù),下面以風(fēng)場(chǎng)圖為例,進(jìn)行繪制,此圖來自于官網(wǎng),但對(duì)其繪圖代碼進(jìn)行了精簡(jiǎn)。
首先創(chuàng)建示例數(shù)據(jù)
import numpy as np import cartopy.crs as ccrs def sample_data(shape=(20, 30)): crs = ccrs.RotatedPole(pole_longitude=177.5, pole_latitude=37.5) x = np.linspace(311.9, 391.1, shape[1]) y = np.linspace(-23.6, 24.8, shape[0]) X, Y = np.deg2rad(np.meshgrid(x, y)) u = 10 * (2 * np.cos(2 * X + 3 * (Y + 30)) ** 2) v = 20 * np.cos(6 * np.deg2rad(X)) return x, y, u, v, crs
下面是繪圖代碼
import matplotlib.pyplot as plt fig = plt.figure(figsize=(10, 5)) ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) ax.set_extent([-90, 80, 10, 85], crs=ccrs.PlateCarree()) ax.stock_img() ax.coastlines() x, y, u, v, vector_crs = sample_data(shape=(10, 14)) ax.barbs(x, y, u, v, length=5, sizes=dict(emptybarb=0.25, spacing=0.2, height=0.5), lw=0.95, transform=vector_crs) plt.show()
到此這篇關(guān)于使用Python實(shí)現(xiàn)繪制地圖的示例詳解的文章就介紹到這了,更多相關(guān)Python繪制地圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas:get_dummies()與pd.factorize()的用法及區(qū)別說明
這篇文章主要介紹了pandas:get_dummies()與pd.factorize()的用法及區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05關(guān)于Python 內(nèi)置庫 itertools
今天得這篇文章就來給大家介紹一下Python的系統(tǒng)庫itertools的 相關(guān)資料,需要的小伙伴可以參考下面文章的具體內(nèi)容2021-09-09numpy數(shù)組之讀寫文件的實(shí)現(xiàn)
本文主要介紹了numpy數(shù)組之讀寫文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02pyinstaller?pathex參數(shù)引發(fā)打包no?module?name異常
這篇文章主要為大家介紹了一個(gè)關(guān)于pyinstaller的?pathex?參數(shù)所引發(fā)的打包執(zhí)行報(bào)no?module?name的異常錯(cuò)誤解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python3.4+pycharm 環(huán)境安裝及使用方法
這篇文章主要介紹了python3.4+pycharm 環(huán)境安裝及使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06python?解決?pip?時(shí)報(bào)錯(cuò)?no?suchoption:?--bulid-dir?的解決辦法(最新
在使用PyCharm虛擬環(huán)境pip時(shí),有時(shí)會(huì)遇到錯(cuò)誤提示“no?such?option:?--build-dir”,這可能是由于pip版本不兼容或其他原因?qū)е碌模疚膶⒃敿?xì)講解如何解決這個(gè)問題,感興趣的朋友跟隨小編一起看看吧2023-05-05Python Django框架介紹之模板標(biāo)簽及模板的繼承
今天給大家?guī)鞵ython Django框架的相關(guān)知識(shí),文中對(duì)模板標(biāo)簽及模板的繼承介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05