前面我們生成了函數的動態圖像
Python100天41: matplotlib畫動態函數圖的探索
Python100天40: 用程序畫一個運動的三角函數變化過程
現在我們想實現柱狀圖

柱關圖函數
figure, ax xaix,yaxis title ,data的關係如下
ax的本質 是一個 AxesSubplot類的一個對象

核心問題是如何畫這個 bat,有個函數 barh()
第一參數是縱座標,第二個參數是橫座標的長度,其實還有一個參數可以定義這個柱圖的高度。大家可以看到中間的圖的調試是比較大的。
ax.barh(1, num, color='#adb0ff') # 繪製水平方向的條形圖barh()ax.barh(10, 2 ,height=3, color='#ffb3ff') # 繪製水平方向的條形圖barh()ax.barh(20, num, color='#90d595')
完整的代碼如下
fig, ax = plt.subplots()print(ax)def graph(num):ax.barh(1, num, color='#adb0ff') # 繪製水平方向的條形圖barh()ax.barh(3, 2, color='#ffb3ff') # 繪製水平方向的條形圖barh()ax.barh(5, num, color='#90d595') # 繪製水平方向的條形圖barh()def update(i):plt.cla()graph(i)update(3)plt.show()

以下視頻 是程序運行效果
視頻加載中...
那麼問題來了,我想讓這個能動態的變化
我們利用上次的 FuncAnimation動畫來來斷的畫柱圖,這樣就構成了動畫 。以下視頻 是效果圖
視頻加載中...
'''Created on 2022年12月10日@author: admin'''from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimationfig, ax = plt.subplots() def graph(num):ax.barh(1, num-6, color='#adb0ff') # 繪製水平方向的條形圖barh()ax.barh(10, num-1 , color='#ffb3ff') # 繪製水平方向的條形圖barh()ax.barh(20, num-5, color='#90d595') # 繪製水平方向的條形圖barh()def update(i):plt.cla()graph(i)import numpy as np'''定義x的座標變化 使用 FuncAnimation函數來實現plt.cla() 函數清理畫面'''xDirction = np.linspace(0,100, 50)ani = FuncAnimation(fig, update,frames=xDirction,interval=5, blit=False,repeat=False) # 創建動畫效果plt.show()