利用Python實現動態排名效果

實現動態排名效果(基於Python+Matplotlib)

一、背景

       之前的動態排名效果很流行。已有一些成熟的工具可以使用。在接觸了Matplotlib的animation模塊後,想自己動手實現一下;同時希望提供一些接口,方便對動畫的效果和樣式進行設置。
       在實現過程中遇到很多坑。比如如何利用Python調用imagemagick輸出視頻文件;直接plt.show()展示的效果竟然和save()出的視頻效果有差異;輸出的視頻“不完整”。不過目前都已經解決。
       相關代碼已部署到Gitee中(https://gitee.com/jixuanfan/Animation),感興趣的同學可以去玩一下~

二、應用舉例

  1. 基本動畫效果
DA=Dynamic_ranking('Example/test.txt',step=10,interval=2,v_space=3)
DA.Run(repeat=True,repeat_delay=2.5)  #直接將動畫效果顯示到屏幕
DA.Run(save_path='Example/dynamic_ranking_2.gif',writer='imagemagick')  #默認的writer是pillow

基本效果
2. 可配置動畫效果

DA=Dynamic_ranking('Example/test.txt',step=10,interval=2,v_space=2,bar_arg={'cmap':{'AA':'#FFAB00','BB':'#3515B0','CC':'#FFE900','DD':'#58E000','EE':'#FF3100'},'alpha':0.8})
DA.Run(repeat=True,repeat_delay=2.5)  #直接將動畫效果顯示到屏幕
DA.Run(save_path='Example/dynamic_ranking.gif')  #將動畫轉換爲GIF輸出到指定路徑

動態排名
3. 實例:近20年乒乓球男子單打排名

DA=Dynamic_ranking('Example/table_tennis.csv',step=10,interval=2,v_space=2,time_fmt='M',text_arg={'right_x_margin':13,'left_x_margin':10,'time_c':'r','time_fz':18,'name_fz':11,'time_y':0.03})
DA.Run(save_path='Example/table_tennis.gif',writer='pillow')

動態排名

  • 這裏僅放部分效果,要查看完整效果,請前往Gitee
  • 更多參數請看help(Dynamic_ranking)

三、進一步改進

  1. 增加MP4格式的文件輸出;
  2. 增加數據獲取方式,不僅僅通過src參數指定文件路徑,也可直接通過list或者ndarray/DataFrame傳入數據;
  3. 進一步優化動畫效果,增加更多可配置選項;
  4. 增加更多動態可視化效果。

原創不易,如果有幫助到你,麻煩點個贊~ 轉載請註明出處~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章