<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
大家好,本文將分享如何使用matplotlib
製作動態條形圖,製作的圖很美,這個是我在之前釋出的一篇中使用的圖片,
效果如下
為了方便大家學習,我將不直接進行講解,而是以我是如何一步步製作的思路來介紹整個過程。
說到用 Python 製作動態圖,首先想到的肯定是一些直接拿來就用的庫,雖然我沒做過,但是我相信一定有且不止一個,搜了一圈後發現有個bar chart race
庫看起來不錯
畢竟有現成的輪子,只需要填充資料即可,但是研究了一番,正如我之前所說,越好看的圖對資料的要求越高,這個動態圖的庫指定資料必須類似如下格式
即有時間和國家兩個維度,通過時間的變化來動態變化資料,但是我的資料很簡單,就一列人名一列資料如下
如果再將資料強行修改成該庫所需要的格式,花費的功夫將更多!所以果斷放棄,回到我熟悉的matplotlib
上,首先很自然的想法就是,根據每一行,寫一個迴圈,每次迴圈就建立一個條形圖。
這個想法是完全可以的,也有很多人這麼做了,但是有一個問題就是做出來的效果太難看了,並且每次迴圈都需要重新生成畫布繪圖需要一定時間,這也會讓最後的動態圖顯的不連貫。所以稍作嘗試後這個思路也被拋棄了。
又經過一番探索後,終於找到一個合適的工具——animation
模組,可以完美的實現我的需求,只需要將你的繪圖函數寫好,將涉及到的引數空出來,通過FuncAnimation
來更新資料即可。
當然我也是第一次接觸,雖瞭解思路但不清楚具體實現邏輯,所以先從官方拉一個demo來看看整個過程如何實現
fig, ax = plt.subplots() xdata, ydata = [], [] ln, = ax.plot([], [], 'r-', animated=False) def init(): ax.set_xlim(0, 2*np.pi) ax.set_ylim(-1, 1) return ln, def update(frame): xdata.append(frame) ydata.append(np.sin(frame)) ln.set_data(xdata, ydata) return ln, ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128), init_func=init, blit=True) HTML(ani.to_jshtml())
上面這段程式碼取自官方檔案,並不難讀懂,首先建立figure
和axes
,之後將涉及到的資料xdata,ydata
空出來,再用update函數來更新資料並繪圖,具體為將資料賦給frames
,通過FuncAnimation
範例傳到update
中實現迭代繪圖,最後可以使用ipython的內建工具來將動態圖展示在notebook中,效果如下
到這裡基本上就搞明白整個過程了,下面我們只需要照貓畫虎,寫一個繪圖函數並設計如何更新資料即可,具體如下
解釋一下這一大段程式碼,拋開設定標題、座標軸等修飾的部分,實際上也只做了一件事通過flag引數來繪製每一行資料。
為什麼需分為兩段,因為我們圖上需要七根柱子,而剛開始的時候只有不到七條資料,所以需要先建立七個空資料,在繪製前七個柱狀圖時,依次新增,而後面只需要從7開始,刪除最早的一個資料,並向後追加一個資料即可,額外需要考慮的是我們需要為每一個資料確定一個顏色,所以還有一列顏色列也需要更新,最終我們的資料如下
在搞定shuang這個繪圖函數後,只需要迭代更新資料並展示即可,相關程式碼如下
其中ani.save()
可以將動圖儲存為gif,HTML(ani.to_html5_video())
可以將動圖儲存為mp4,而HTML(ani.to_jshtml())
則是在notebook
中直接檢視最終效果(注意第一次執行這裡會報錯,根據相關提示安裝依賴即可),大家可以自己嘗試
至於程式碼中如何新增標題、修改座標軸、修改註釋等操作本文就不在細講了,最後是製作完成的效果,我個人感覺還不錯,也可以匯出為高解析度視訊新增bgm製作視訊
以上就是Python利用matplotlib實現製作動態條形圖的詳細內容,更多關於Python matplotlib動態條形圖的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45