如何使用 Python 建立動畫天氣圖?


天氣圖天氣資料在特定時間段內的圖形表示,通常顯示在一個圖表上。它們提供了一種簡潔直觀的途徑來表示多個天氣變數,例如溫度、溼度、風速、降水等隨時間的變化。天氣圖廣泛應用於氣象學和天氣預報,用於分析和視覺化天氣趨勢和變化。

一個典型的天氣圖包含一個沿 x 軸的時間軸,表示感興趣的時間段,以及一個或多個沿 y 軸的垂直軸,表示正在繪製的天氣變數。每個天氣變數通常用線或條形表示,變數值隨時間的變化用形狀、顏色或其他視覺提示表示。天氣圖還可以包含其他資訊,例如圖示、符號或註釋,以提供更多上下文或突出顯示重要的天氣事件。

天氣圖有助於深入瞭解天氣模式、識別趨勢和預測天氣狀況。由於它們能夠清晰簡潔地表示天氣資料以用於決策,因此廣泛應用於各個行業和應用領域,包括航空、農業、能源、交通和戶外活動。天氣圖可以使用各種程式設計工具和庫來建立,例如使用 Matplotlib、seaborn 等庫的 Python,或使用 meteoblue 等專門的天氣 API 以圖形格式獲取和繪製天氣資料。

在開始構建天氣圖之前,您需要在 meteoblue 網站上註冊並訂閱地理位置新聞通訊。您可能需要等待幾天才能收到您偏好區域的幾個天氣圖。然後,幾天後,我們會收到該地理位置近 7-8 天的天氣圖,收到郵件後,我們下載天氣圖的附件並將其放在某個資料夾中。

語法

要建立動畫天氣圖,您需要遵循以下語法:

imagepath.glob(extensionpattern)
# syntax for image.io
imageio.imread(filename)
imageio.mimwrite(filename or fileobject, imagelist)

# syntax for PIL and Matplotlib
image = PIL.Image.open(imageframe)
ani = animation.FuncAnimation(figure, updateFrameFunction, framesCount, interval)
ani.save(mp4 filename, writer)

第一行根據特定的副檔名模式查詢目錄中的檔案。imageio.imread 從指定的檔名讀取影像檔案。Imageio.mimwrite 將影像資料列表寫入動畫 GIF。

PIL 部分分別開啟影像檔案、建立具有指定引數的動畫並將其儲存為 MP4 影片檔案。

示例 1

給定的程式碼使用 Python 的 pathlib 和 imageio 庫建立了一個動畫天氣圖。它首先匯入必要的庫,包括用於檔案路徑操作的 pathlib 中的 Path 和用於讀取和寫入影像資料的 imageio。然後,它使用 Path 定義了天氣圖影像所在的目錄,並使用 glob 查詢該目錄中的所有 PNG 檔案。它使用 imageio.imread() 讀取每個影像檔案並將影像資料追加到列表中。最後,它使用 imageio.mimwrite() 將影像資料列表寫入動畫 GIF 檔案,從而建立了一個動畫天氣圖。

from pathlib import Path
import imageio
image_directory = Path('../input/meteograms')
image_files = list(image_directory.glob('*.png'))
image_data = []
for file in image_files:
   image_data.append(imageio.imread(file))

imageio.mimwrite('animatedmeteogram.gif', image_data)

輸出

示例 2

在此示例中,程式碼使用 Python 的 Matplotlib 庫和 PIL (Pillow) 進行影像處理,建立了一個動畫天氣圖。它首先匯入必要的庫併為繪圖定義了一個圖形和軸。然後,它使用 Path 庫從指定目錄讀取一系列影像,根據檔名對它們進行排序,並定義一個函式來更新動畫的幀。動畫是使用 Matplotlib 中的 FuncAnimation 類建立的,指定了圖形、更新函式和幀數。最後,動畫使用“imagemagick”寫入器儲存為 MP4 影片檔案。

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from pathlib import Path
fig, ax = plt.subplots()
image_path = Path('../input/meteograms')
images = list(image_path.glob('*.png'))
images = sorted(images, key=lambda x: int(x.stem))
def updateFrames(frame):
   im = Image.open(images[frame])
   im = np.array(im)
   ax.imshow(im)
   ax.set_axis_off()
ani = animation.FuncAnimation(fig, updateFrames, frames=len(images), interval=500)
ani.save('animatedmeteogram.mp4', writer='imagemagick')

輸出

結論

我們學習瞭如何使用 2 個不同的庫在 Python 中建立動畫天氣圖。動畫天氣圖在視覺上也可能更具吸引力和參與性,這使得它們可用於教育或溝通目的,以便有效地向更廣泛的受眾傳達天氣資訊。

更新於: 2023年5月11日

500 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.