Matplotlib - Basemap



什麼是Basemap?

Matplotlib Basemap 工具包是 Matplotlib 的一個擴充套件,它提供了建立地圖和涉及地理資料的視覺化的功能。它允許使用者在各種地圖投影上繪製資料,繪製海岸線、國家和其他地圖特徵。這些用於在 Matplotlib 中無縫處理地理座標。

以下是 Matplotlib Basemap 的主要功能。

地圖投影

Basemap 支援各種地圖投影,允許使用者在不同的座標系(如圓柱形、圓錐形或方位投影)中視覺化資料。例如墨卡託投影、蘭伯特投影和正射投影。

繪製地理資料

Basemap 允許在地圖上繪製地理資料,例如點、線或多邊形。使用者可以將資料集疊加到地圖上並可視化地理關係。

地圖元素

Basemap 提供了新增地圖元素的功能,例如海岸線、國家、州、河流和政治邊界,從而增強地圖的視覺效果。

座標轉換

它方便地在不同的座標系之間進行轉換,例如經緯度到地圖投影座標,反之亦然。

安裝 Basemap

如果我們想使用 matplotlib 庫的 Basemap,我們必須在我們的工作環境中安裝它。以下是程式碼。

示例

pip install basemap

注意 - 當我們使用 Jupyter Notebook 時,必須透過 Anaconda 命令終端安裝 basemap。

輸出

installation

Basemap 的基本工作流程

以下是 Matplotlib 庫 Basemap 的基本工作流程。讓我們詳細瞭解每一個步驟,以便更好地理解。

Basemap Workflow

建立 Basemap 例項

透過指定地圖投影、邊界座標和其他引數來例項化 Basemap 物件。要在 Matplotlib 中使用 Basemap 工具包建立 Basemap 例項,我們可以定義地圖投影並指定所需的地圖邊界。

示例

在這個例子中,我們使用指定的墨卡託投影和提供的邊界座標生成一個帶有海岸線和國家邊界的簡單地圖。我們可以透過新增特徵、繪製資料點或根據我們的需求使用不同的投影和解析度來進一步自定義地圖。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# Create a Basemap instance with a specific projection and bounding coordinates
map = Basemap(
   projection='merc', llcrnrlat=-80, urcrnrlat=80,
   llcrnrlon=-180, urcrnrlon=180, resolution='c')

# Draw coastlines and countries
map.drawcoastlines()
map.drawcountries()

# Show the map
plt.show()
輸出
Basemap Instance

在地圖上繪製資料

在這裡,我們使用 Basemap 方法繪製地圖特徵、繪製資料點或視覺化地理資料集。

示例

在這個例子中,我們生成隨機的經緯度點,然後使用 map() 函式將這些座標投影到 Basemap 例項上。然後使用 scatter() 方法將這些投影點作為紅色標記繪製在地圖上。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

# Create a Basemap instance with a specific projection and bounding coordinates
map = Basemap(
   projection='merc', llcrnrlat=-80, urcrnrlat=80,
   llcrnrlon=-180, urcrnrlon=180, resolution='c')

# Draw coastlines and countries
map.drawcoastlines()
map.drawcountries()

# Generate random data (longitude, latitude) for plotting
num_points = 100
lons = np.random.uniform(low=-180.0, high=180.0, size=num_points)
lats = np.random.uniform(low=-80.0, high=80.0, size=num_points)

# Plot the data points on the map
x, y = map(lons, lats)  # Project the latitudes and longitudes to map coordinates
map.scatter(x, y, marker='o', color='red', zorder=10)  # Plotting the data points

# Show the map with plotted data
plt.title('Data Points on Map')
plt.show()
輸出
Plot Data

顯示地圖

我們可以使用 Matplotlib 庫的 show() 函式顯示最終地圖。

示例

這是一個演示使用 Basemap 建立地圖和繪製資料點的示例。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

# Creating a Basemap instance with a specific projection and bounding coordinates
map = Basemap(
   projection='merc', llcrnrlat=-80, urcrnrlat=80,
   llcrnrlon=-180, urcrnrlon=180, resolution='c')

# Drawing coastlines, countries, and states
map.drawcoastlines()
map.drawcountries()
map.drawstates()

# Generating random data for plotting
num_points = 100
lons = np.random.uniform(low=-180.0, high=180.0, size=num_points)
lats = np.random.uniform(low=-80.0, high=80.0, size=num_points)
data_values = np.random.rand(num_points) * 100  # Random values for data

# Plotting data points on the map
x, y = map(lons, lats)  # Projecting latitudes and longitudes to map coordinates
map.scatter(x, y, c=data_values, cmap='viridis', marker='o', alpha=0.7)

# Adding a colorbar to represent the data values
plt.colorbar(label='Data Values')

# Display the map with plotted data
plt.title('Basemap Example with Data Points')
plt.show()
輸出
Display Basemap

Matplotlib Basemap 的應用

地理空間分析 - 分析和視覺化地理資料,例如氣候模式、人口分佈或地震活動。

製圖 - 為出版物、簡報或研究目的建立自定義地圖。

資料視覺化 - 將地理資料與其他資料集整合,用於探索性資料分析。

注意

Matplotlib Basemap 正在逐步淘汰,取而代之的是更新的地理空間庫,例如 Cartopy,它提供了更廣泛的功能以及與 Matplotlib 更好的整合。Cartopy 建立在 Basemap 的概念之上,但提供了一個更現代、靈活和積極開發的介面,用於在 Matplotlib 中處理地理空間資料。

廣告