使用Python實現(xiàn)繪制地圖的示例詳解
海岸線
cartopy是英國氣象局開發(fā)的一款用于地理空間數(shù)據(jù)處理的python庫,支持創(chuàng)建并發(fā)布高質(zhì)量地圖,隨著basemap的停止維護(hù),cartopy已成Python中地理繪圖的首選模塊,其最簡單的地圖即為海岸線的線條圖,示例如下
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)軸,便可得到一個cartopy定義的坐標(biāo)軸對象GeoAxes
type(ax) # <class 'cartopy.mpl.geoaxes.GeoAxes'>
GeoAxes顯然繼承自Axes,除了matplotlib中的函數(shù)之外,還封裝了一些用于地圖繪制的函數(shù)。
地形圖
coastlines即海岸線,由此得到的地圖是極致的線條風(fēng)格,光禿禿得什么都沒有,并不好看。通過stock_img函數(shù),可以為地圖添加低分辨率的地形圖背景,示例如下,看上去十分不錯,但需要注意,這個圖目前就只有這一張。
ax = plt.axes(projection=ccrs.PlateCarree(180)) ax.stock_img() plt.show()

重載繪圖函數(shù)
matplotlib中提供了非常多的繪圖函數(shù),cartopy對下列諸圖進(jìn)行了重載,有關(guān)這些圖形的示例,可參考:python35種繪圖函數(shù)總結(jié),3D、統(tǒng)計、流場,實用性拉滿
| 繪圖函數(shù) | 圖形類別 |
|---|---|
| scatter | 散點圖 |
| barbs | 風(fēng)場圖 |
| quiver | 向量場圖 |
| streamplot | 流場圖 |
| contour | 等高線 |
| contourf | 填充等高線 |
| pcolor | 矩陣偽彩圖 |
| pcolormesh | 矩陣偽彩圖 |
| hexbin | 鉆石圖 |
和Axes中的繪圖函數(shù)相比,這些重載后的方法普遍添加了transform參數(shù),下面以風(fēng)場圖為例,進(jìn)行繪制,此圖來自于官網(wǎng),但對其繪圖代碼進(jì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實現(xiàn)繪制地圖的示例詳解的文章就介紹到這了,更多相關(guān)Python繪制地圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 實現(xiàn)關(guān)聯(lián)規(guī)則算法Apriori的示例
這篇文章主要介紹了python 實現(xiàn)關(guān)聯(lián)規(guī)則算法Apriori的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09
pandas?Dataframe實現(xiàn)批量修改值的方法
這篇文章主要介紹了pandas?Dataframe實現(xiàn)批量修改值的方法,在使用dataframe的時候?有時候會碰到需要批量修改數(shù)據(jù)的時候,下面文章主要說明兩種情況使用iloc對某幾行某幾列進(jìn)行全部修該和對數(shù)據(jù)進(jìn)行判定后,相互+/-/*某個數(shù),使用內(nèi)置函數(shù),需要的朋友可以參考一下2022-06-06
Python實現(xiàn)查詢剪貼板自動匹配信息的思路詳解
這篇文章主要介紹了Python實現(xiàn)查詢剪貼板自動匹配信息,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07
使用Fastapi打包exe后無限啟動導(dǎo)致死機(jī)的解決辦法
將 fastapi 服務(wù)打包成 exe 后雙擊執(zhí)行,命令行中不斷創(chuàng)建服務(wù)導(dǎo)致cpu吃滿,最后死機(jī),所以本文給大家介紹了Fastapi打包exe后無限啟動導(dǎo)致死機(jī)的解決辦法,需要的朋友可以參考下2024-03-03
Python中matplotlib庫安裝失敗的經(jīng)驗總結(jié)(附pycharm配置anaconda)
最近根據(jù)領(lǐng)導(dǎo)布置的學(xué)習(xí)任務(wù),開始學(xué)習(xí)python中的matplotlib,朋友告訴我這個很簡單,然而剛踏入安裝的門檻,就遇到了安裝不成功的問題,下面這篇文章主要給大家介紹了關(guān)于Python中matplotlib庫安裝失敗的經(jīng)驗總結(jié),需要的朋友可以參考下2022-08-08

