欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用matplotlib實(shí)現(xiàn)制作動態(tài)條形圖

 更新時(shí)間:2022年10月08日 10:12:13   作者:Python數(shù)據(jù)挖掘  
說到用 Python 制作動態(tài)圖,首先想到的肯定是一些直接拿來就用的庫,雖然我沒做過,但是我相信一定有且不止一個(gè),搜了一圈后發(fā)現(xiàn)有個(gè)bar chart race庫看起來不錯(cuò),感興趣的可以跟隨小編一起學(xué)習(xí)一下

大家好,本文將分享如何使用matplotlib制作動態(tài)條形圖,制作的圖很美,這個(gè)是我在之前發(fā)布的一篇中使用的圖片,

效果如下

制作思路

為了方便大家學(xué)習(xí),我將不直接進(jìn)行講解,而是以我是如何一步步制作的思路來介紹整個(gè)過程。

說到用 Python 制作動態(tài)圖,首先想到的肯定是一些直接拿來就用的庫,雖然我沒做過,但是我相信一定有且不止一個(gè),搜了一圈后發(fā)現(xiàn)有個(gè)bar chart race庫看起來不錯(cuò)

畢竟有現(xiàn)成的輪子,只需要填充數(shù)據(jù)即可,但是研究了一番,正如我之前所說,越好看的圖對數(shù)據(jù)的要求越高,這個(gè)動態(tài)圖的庫指定數(shù)據(jù)必須類似如下格式

即有時(shí)間和國家兩個(gè)維度,通過時(shí)間的變化來動態(tài)變化數(shù)據(jù),但是我的數(shù)據(jù)很簡單,就一列人名一列數(shù)據(jù)如下

如果再將數(shù)據(jù)強(qiáng)行修改成該庫所需要的格式,花費(fèi)的功夫?qū)⒏?!所以果斷放棄,回到我熟悉?code>matplotlib上,首先很自然的想法就是,根據(jù)每一行,寫一個(gè)循環(huán),每次循環(huán)就創(chuàng)建一個(gè)條形圖。

這個(gè)想法是完全可以的,也有很多人這么做了,但是有一個(gè)問題就是做出來的效果太難看了,并且每次循環(huán)都需要重新生成畫布繪圖需要一定時(shí)間,這也會讓最后的動態(tài)圖顯的不連貫。所以稍作嘗試后這個(gè)思路也被拋棄了。

animation

又經(jīng)過一番探索后,終于找到一個(gè)合適的工具——animation模塊,可以完美的實(shí)現(xiàn)我的需求,只需要將你的繪圖函數(shù)寫好,將涉及到的參數(shù)空出來,通過FuncAnimation來更新數(shù)據(jù)即可。

當(dāng)然我也是第一次接觸,雖了解思路但不清楚具體實(shí)現(xiàn)邏輯,所以先從官方拉一個(gè)demo來看看整個(gè)過程如何實(shí)現(xiàn)

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())

上面這段代碼取自官方文檔,并不難讀懂,首先創(chuàng)建figureaxes,之后將涉及到的數(shù)據(jù)xdata,ydata空出來,再用update函數(shù)來更新數(shù)據(jù)并繪圖,具體為將數(shù)據(jù)賦給frames,通過FuncAnimation實(shí)例傳到update中實(shí)現(xiàn)迭代繪圖,最后可以使用ipython的內(nèi)置工具來將動態(tài)圖展示在notebook中,效果如下

到這里基本上就搞明白整個(gè)過程了,下面我們只需要照貓畫虎,寫一個(gè)繪圖函數(shù)并設(shè)計(jì)如何更新數(shù)據(jù)即可,具體如下

解釋一下這一大段代碼,拋開設(shè)置標(biāo)題、坐標(biāo)軸等修飾的部分,實(shí)際上也只做了一件事通過flag參數(shù)來繪制每一行數(shù)據(jù)。

為什么需分為兩段,因?yàn)槲覀儓D上需要七根柱子,而剛開始的時(shí)候只有不到七條數(shù)據(jù),所以需要先創(chuàng)建七個(gè)空數(shù)據(jù),在繪制前七個(gè)柱狀圖時(shí),依次添加,而后面只需要從7開始,刪除最早的一個(gè)數(shù)據(jù),并向后追加一個(gè)數(shù)據(jù)即可,額外需要考慮的是我們需要為每一個(gè)數(shù)據(jù)確定一個(gè)顏色,所以還有一列顏色列也需要更新,最終我們的數(shù)據(jù)如下

在搞定shuang這個(gè)繪圖函數(shù)后,只需要迭代更新數(shù)據(jù)并展示即可,相關(guān)代碼如下

其中ani.save()可以將動圖存儲為gif,HTML(ani.to_html5_video())可以將動圖保存為mp4,而HTML(ani.to_jshtml())則是在notebook中直接查看最終效果(注意第一次運(yùn)行這里會報(bào)錯(cuò),根據(jù)相關(guān)提示安裝依賴即可),大家可以自己嘗試

至于代碼中如何添加標(biāo)題、修改坐標(biāo)軸、修改注釋等操作本文就不在細(xì)講了,最后是制作完成的效果,我個(gè)人感覺還不錯(cuò),也可以導(dǎo)出為高分辨率視頻添加bgm制作視頻

以上就是Python利用matplotlib實(shí)現(xiàn)制作動態(tài)條形圖的詳細(xì)內(nèi)容,更多關(guān)于Python matplotlib動態(tài)條形圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 十道Python面試最常問到的問題

    十道Python面試最常問到的問題

    這篇文章主要介紹了十道Python面試最常問到的問題,都是基礎(chǔ)的面試題,包括函數(shù),修飾器,數(shù)據(jù)結(jié)構(gòu)等,需要的朋友可以參考下
    2023-04-04
  • 如何通過命令行進(jìn)入python

    如何通過命令行進(jìn)入python

    在本篇文章中小編給各位分享的是一篇關(guān)于命令行進(jìn)入python的方法,有需要的朋友們學(xué)習(xí)一下。
    2020-07-07
  • selenium?drag_and_drop不生效的解決辦法

    selenium?drag_and_drop不生效的解決辦法

    本文主要介紹了selenium?drag_and_drop不生效的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python寫一個(gè)簡單上課點(diǎn)名系統(tǒng)(附源碼)

    Python寫一個(gè)簡單上課點(diǎn)名系統(tǒng)(附源碼)

    這篇文章主要介紹了Python寫一個(gè)簡單上課點(diǎn)名系統(tǒng),文章圍繞Python得性概念資料寫一個(gè)簡的得上課點(diǎn)名系統(tǒng),并附上詳細(xì)的代碼即過程總結(jié),需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • python機(jī)器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用

    python機(jī)器學(xué)習(xí)混淆矩陣及confusion?matrix函數(shù)使用

    這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)混淆矩陣confusion_matrix函數(shù)使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解Python中的日志模塊logging

    詳解Python中的日志模塊logging

    這篇文章主要介紹了Python中的日志模塊logging,包括Python下的日志級別以及模塊內(nèi)常用方法的使用,需要的朋友可以參考下
    2015-06-06
  • django-filter和普通查詢的例子

    django-filter和普通查詢的例子

    今天小編就為大家分享一篇django-filter和普通查詢的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}

    淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}

    這篇文章主要介紹了淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴},具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • keras 回調(diào)函數(shù)Callbacks 斷點(diǎn)ModelCheckpoint教程

    keras 回調(diào)函數(shù)Callbacks 斷點(diǎn)ModelCheckpoint教程

    這篇文章主要介紹了keras 回調(diào)函數(shù)Callbacks 斷點(diǎn)ModelCheckpoint教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python中JsonPath提取器和正則提取器

    Python中JsonPath提取器和正則提取器

    本文主要介紹了Python中JsonPath提取器和正則提取器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論