透視Matplotlib核心功能和工具包 - Cartopy工具包

國外課棧發表於2020-12-02

關聯知識

Cartopy是用於在Matplotlib上繪製地理地圖的第三方工具包。Cartopy具有各種各樣的功能,可以滿足許多不同的使用者群體。 在這裡,我們將嘗試介紹企業中通常使用的大多數功能。

地理地圖以經度和緯度繪製,均以度為單位。 經度繪製在x軸上,並且從西向180度(-180)到東向180度(180)變化。 緯度繪製在y軸上,從向南90度(-90)到向北90度(90)變化。 地圖上的位置由其經度和緯度值標識。

繪製基本地圖特徵

在此,我們將學習cartopy提供的用於繪製地圖的基本功能。 將涵蓋國家邊界,沿海地區與陸地,陸地區域,海洋,河流和湖泊的邊界等特徵。 它還將介紹如何提供背景影像以實現更好的視覺化效果。

匯入所需庫:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature

步驟細節:

  • 如下定義圖和軸:
fig = plt.figure(figsize=(12,8))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
  • 使用以下命令設定範圍和背景影像:
ax.set_global()
ax.stock_img()
  • 新增所需的功能以在地圖上進行繪製,如下所示:
ax.add_feature(cfeature.LAND, color='wheat')
ax.add_feature(cfeature.OCEAN, color='skyblue')
ax.add_feature(cfeature.COASTLINE, linestyle='-',lw=3)
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.add_feature(cfeature.LAKES, alpha=0.5, color='y')
ax.add_feature(cfeature.RIVERS, color='blue')
ax.tissot(facecolor='orange', alpha=0.4) # Tissot's indicatrix in cartography
  • 設定標題和標籤,如下所示:
ax.set_title('Cartopy Map Features - Demo', size=20, weight='bold', color='g')

ax.text(0.5, -0.06, 'Longitude', va='bottom', ha='center', size=15, color='r',
       rotation='horizontal', rotation_mode='anchor', transform=ax.transAxes)
ax.text(-0.02, 0.55, 'Latitude', va='bottom', ha='center', size=15, color='b',
        rotation='vertical', rotation_mode='anchor', transform=ax.transAxes)
  • 使用以下命令在螢幕上顯示地圖:
plt.show()

分解程式碼

  • import cartopy.crs as ccrs 匯入負責設定參考座標系的包。
  • import cartopy.feature as cfeature匯入用於繪製各種要素的包,例如陸地,海洋,河流和湖泊。
  • ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) 定義要在其上繪製地圖的軸,如下所示:
    • (1,1,1)指定它是1 x 1網格中的第一個軸,這實際上意味著它是整個圖形中的唯一圖。
    • projection = ccrs.PlateCarree()指定用於繪製地圖的座標參考系統。 Cartopy提供了許多這樣的投影(參考座標系)。
    • 投影僅給出了地圖的輪廓,因此根據我們要繪製的內容,我們可以新增各種預定義的要素,然後繪製我們感興趣的資料。
  • ax.set_global() 指定座標系統的限制由整個地球形成,這恰好是預設設定。 通過覆蓋此全域性設定,我們可以設定較小的限制來繪製感興趣的特定區域。
  • ax.stock_img()在背景上繪製預設影像,以提供更好的視覺化效果。 也可以用我們自己的影像覆蓋它。
  • ax.add_feature(cfeature.LAND, color=‘wheat’) 使用小麥顏色設定繪製標記為土地的區域。
  • ax.add_feature(cfeature.OCEAN, color=‘skyblue’)使用“天藍色”顏色設定繪製海洋。
  • ax.add_feature(cfeature.COASTLINE, linestyle=’-’,lw=3)繪製沿沿海地區將土地和水分開的線,線寬為3點,虛線樣式為虛線。
  • ax.add_feature(cfeature.BORDERS, linestyle=’:’)用冒號的線條樣式繪製國家邊界。
  • ax.add_feature(cfeature.LAKES, alpha=0.5, color=‘y’)繪製具有黃色設定的湖泊。
  • ax.add_feature(cfeature.RIVERS, color=‘blue’) 用藍色繪製河流。
  • ax.tissot(facecolor=‘orange’, alpha=0.4)繪製天梭的指標。
  • ax.set_title(‘Cartopy Map Features - Demo’, size=20, weight=‘bold’, color=‘g’)列印具有各種與文字相關的屬性的標題。
  • ax.text()用於列印x和y標籤。 常規的ax.set_xlabel和ax.set_ylabel命令在這裡不起作用,因為將軸控制元件賦予了ax.gridlines()函式,該函式也沒有用於繪製x和y軸標籤的預定義方法。

執行上述程式碼後,您應該在螢幕上看到以下地圖:

詳情參閱http://viadean.com/matplotlib_cartopy.html

相關文章