最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

效果如下

制作思路

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

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

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

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

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

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

animation

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

當(dāng)然我也是第一次接觸,雖了解思路但不清楚具體實現(xiàn)邏輯,所以先從官方拉一個demo來看看整個過程如何實現(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實例傳到update中實現(xiàn)迭代繪圖,最后可以使用ipython的內(nèi)置工具來將動態(tài)圖展示在notebook中,效果如下

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

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

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

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

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

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

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

相關(guān)文章

  • Python迭代器和生成器定義與用法示例

    Python迭代器和生成器定義與用法示例

    這篇文章主要介紹了Python迭代器和生成器定義與用法,結(jié)合實例形式詳細分析了Python迭代器和生成器的概念、原理、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-02-02
  • 使用Python處理Excel表格的簡單方法

    使用Python處理Excel表格的簡單方法

    這篇文章主要介紹了使用Python處理Excel表格的簡單方法,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2018-06-06
  • Python CVXOPT模塊安裝及使用解析

    Python CVXOPT模塊安裝及使用解析

    這篇文章主要介紹了Python CVXOPT模塊安裝及使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python實現(xiàn)的堆排序算法原理與用法實例分析

    Python實現(xiàn)的堆排序算法原理與用法實例分析

    這篇文章主要介紹了Python實現(xiàn)的堆排序算法,簡單描述了堆排序的原理,并結(jié)合實例形式分析了Python實現(xiàn)堆排序的相關(guān)操作技巧,代碼中備有較為詳細的注釋便于理解,需要的朋友可以參考下
    2017-11-11
  • Python數(shù)據(jù)擬合與廣義線性回歸算法學(xué)習(xí)

    Python數(shù)據(jù)擬合與廣義線性回歸算法學(xué)習(xí)

    這篇文章主要為大家詳細介紹了Python數(shù)據(jù)擬合與廣義線性回歸算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • pydantic進階用法示例詳解

    pydantic進階用法示例詳解

    這篇文章主要為大家介紹了pydantic進階用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Python中三個不可思議的返回功能分享

    Python中三個不可思議的返回功能分享

    這篇文章主要給大家介紹了Python中三個不可思議的返回功能,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01
  • python通過smpt發(fā)送郵件的方法

    python通過smpt發(fā)送郵件的方法

    這篇文章主要介紹了python通過smpt發(fā)送郵件的方法,涉及Python實現(xiàn)發(fā)送郵件的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-04-04
  • 解析Python中的eval()、exec()及其相關(guān)函數(shù)

    解析Python中的eval()、exec()及其相關(guān)函數(shù)

    本篇文章主要介紹了解析Python中的eval()、exec()及其相關(guān)函數(shù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 淺析Python3中的對象垃圾收集機制

    淺析Python3中的對象垃圾收集機制

    在Python中,它在每個對象中保持了一個計數(shù)器,用于記錄指向該對象的的引用的個數(shù)。這篇文章主要介紹了Python3中的對象垃圾收集機制,需要的朋友可以參考下
    2019-06-06

最新評論

定西市| 定边县| 洛扎县| 彭州市| 浦县| 南开区| 南漳县| 福建省| 迁西县| 石阡县| 宝应县| 阿勒泰市| 溆浦县| 固镇县| 东阳市| 方山县| 关岭| 兴安盟| 石门县| 织金县| 永兴县| 城步| 玉树县| 东兰县| 如皋市| 盱眙县| 阳西县| 铁岭县| 铜川市| 福海县| 五峰| 视频| 濉溪县| 丘北县| 慈利县| 峡江县| 特克斯县| 襄垣县| 大连市| 麻城市| 嵊州市|