iT邦幫忙

2024 iThome 鐵人賽

DAY 14
1
自我挑戰組

AI救我系列 第 14

Day 14 - Matplotlib animation 用python製作動畫!基礎介紹

  • 分享至 

  • xImage
  •  

今天就先把光學的部分暫緩,再來聊聊Matplotlib的功能吧!

說實在當初光是用python畫圖就讓本寶寶好震驚,如今知道他還能做動畫,真是太神奇了!

這裡就請chatGPT幫我們簡單介紹一下吧:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 設定繪圖區域
fig, ax = plt.subplots()
x = np.linspace(0, 2 * np.pi, 100) #函數生成數值範圍,100為分割數量
line, = ax.plot(x, np.sin(x)) #繪製函數曲線

# 定義frame更新函數update
def update(frame):
    line.set_ydata(np.sin(x + frame / 10))  # 更新y數據
    return line,



# 創建動畫
ani = animation.FuncAnimation(fig, update, frames=100, interval=50, blit=True)
# interval=50代表每一幀之間的間隔時間為 50 毫秒。
#  blit=True是一種優化技術,用來減少重新繪製整個圖形的開銷,只重新繪製那些發生變化的部分。這可以使動畫更加高效。

# 將動畫保存為GIF
ani.save('sine_wave.gif', writer='pillow')

plt.show()

在這段程式碼中,我們首先設定繪圖區域並畫出初始的正弦波形。在 update 函數中,正弦波的相位隨著 frame的變化而更新,產生動態效果。接著,我們使用 FuncAnimation 創建動畫,並使用 ani.save 將動畫導出為 GIF 格式。這裡使用 pillow 作為 GIF 的生成工具,該庫需提前安裝 (pip install pillow)。

update 函數的作用是在每幀動畫中更新正弦波的 y 軸數據,從而使正弦波在動畫過程中看起來像是在動態移動。每次傳入一個遞增的 frame 值,使正弦波在動畫中持續向右平移,創造出波形不斷流動的視覺效果。

跑出來的動畫(GIF)如下:

動畫圖

ChatGPT教會了我們愛,不對是動畫。
明天我們將開始把之前做的光學現象用動畫展示唷!


上一篇
Day 13 - 多狹縫不同波長繞射強度in python
下一篇
Day 15 - 用python製作光干涉動畫
系列文
AI救我15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言