【Python基础】刷爆网络的动态条形图,3行Python代码就能搞定
上次出了一個在網站「Flourish」畫動態條形圖的文章【動態條形圖視頻教程】,需要登錄網址很多人可能覺得不方便,現在有大佬出了個Python包,只需幾行代碼就能搞定動態條形圖,非常強大,給大家分享下。
一、前期準備工作
1、官方參考文檔
GitHub :https://github.com/dexplo/bar_chart_race
說明文檔:https://www.dexplo.org/bar_chart_race/
2、軟件安裝(該安裝方法只能安裝0.1版本)
pip install bar_chart_race conda install -c conda-forge bar_chart_race0.2版本需要到github安裝
壓縮包解壓到軟件安裝目錄的/site-packages目錄下,利用命令行安裝即可
3、安裝ffmpeg、ImageMagick?
ffmpeg包:不然無法輸出 mp4/m4v/mov/等格式的視頻,該包比較復雜,需要配置變量環境,具體操作可以看看這個博客:
https://baijiahao.baidu.com/s?id=1660327134602942057&wfr=spider&for=pc
ImageMagick包:如果你要創建GIF,需要安裝這個包ImageMagick,安裝方法與上述類似。
二、官方數據畫圖
上述準備都做好了,那就可以開始畫圖了,利用官方提供的數據,直接加載就可以,我的數據下載沒成功,所以自己上傳數據繪圖,等下回講怎么自己上傳數據。
#加載包import bar_chart_race as bcr#下載數據df?=?bcr.load_dataset('covid19_tutorial')#生成GIF圖像bcr.bar_chart_race(df,?'covid19_horiz.gif')#生成MP4bcr.bar_chart_race(df, 'covid19_horiz.MP4')生成的GIF
生成的MP4
三、自己的數據畫圖
如果是自己的數據,要進行一定的處理,達到畫圖格式,不然會報錯。
原始數據
處理后數據(date轉換成了索引)
下面是個我自己制作的一個視頻,金庸小說人氣排行榜,數據獲取,關注公眾號【AI入門學習】,回復「條形圖」即可獲取。
四、圖形美化
作者還提供了很多參數,對圖形進行調整和美化,輸出的圖形更漂亮
1、橫轉縱?Vertical bars
#orientation='v',.gif變成MP4即可輸出視頻 bcr.bar_chart_race(df, 'covid19_horiz.gif', orientation='v')2、升序排序
#?排序方式,sort='asc'-升序bcr.bar_chart_race(df, 'covid19_horiz.gif', sort='asc')3、類目數限制,此處設置為最多出現6條
#?設置最多能顯示的條目數 n_bars=6 bcr.bar_chart_race(df, 'covid19_horiz.gif', n_bars=6)4、設置展示類目
# 選取如下5個國家的數據 fixed_orderbcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_order=['Iran', 'USA', 'Italy', 'Spain', 'Belgium'])5、固定坐標軸
#設置數值的最大值,固定數值軸fixed_max bcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_max=True)6、改變圖像幀數
#圖像幀數,數值越小,越不流暢。越大,越流暢。默認為10比較流暢,改為3就有些卡頓了 bcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=3)7、設置幀率,默認為500ms
# 設置20幀的總時間,此處為200msbcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=20, period_length=200)8、設置每幀增加的標簽時間,默認為False
# 輸出gifbcr.bar_chart_race(df, 'covid19_horiz.gif', interpolate_period=True)9、繪圖屬性設置
# figsize-設置畫布大小,默認(6, 3.5)# dpi-圖像分辨率,默認144# label_bars-顯示柱狀圖的數值信息,默認為True# period_label-顯示時間標簽信息,默認為True# title-圖表標題bcr.bar_chart_race(df, 'covid19_horiz.gif', figsize=(5, 3), dpi=100, label_bars=False, period_label={'x': .99, 'y': .1, 'ha': 'right', 'color': 'red'}, title='COVID-19 Deaths by Country')10、配置標簽文字大小
# bar_label_size-柱狀圖標簽文字大小# tick_label_size-坐標軸標簽文字大小# title_size-標題標簽文字大小bcr.bar_chart_race(df, 'covid19_horiz.gif', bar_label_size=4, tick_label_size=5,????????????????????title='COVID-19?Deaths?by?Country',?????????????????????title_size='smaller')11、全局字體屬性設置
# shared_fontdict-全局字體屬性bcr.bar_chart_race(df, 'covid19_horiz.gif', title='COVID-19 Deaths by Country',????????????????????????shared_fontdict={'family':?'Helvetica',?'weight':?'bold',????????????????????????'color':?'rebeccapurple'})12、透明度,邊框等設置
# bar_kwargs-條形圖屬性設置參數bcr.bar_chart_race(df, 'covid19_horiz.gif', bar_kwargs={'alpha': .2, 'ec': 'black', 'lw': 3})13、日期格式設置
# 設置日期格式,默認為'%Y-%m-%d'bcr.bar_chart_race(df, 'covid19_horiz.gif', period_fmt='%b %-d, %Y')14、改日期標簽為數值格式
# 設置日期標簽為數值bcr.bar_chart_race(df.reset_index(drop=True), 'covid19_horiz.gif', interpolate_period=True, period_fmt='Index value - {x:.2f}')15、添加匯總統計
#設置文本位置、數值、大小、顏色等def summary(values, ranks): total_deaths = int(round(values.sum(), -2)) s = f'Total Deaths - {total_deaths:,.0f}'return {'x': .99, 'y': .05, 's': s, 'ha': 'right', 'size': 8}# 添加文本bcr.bar_chart_race(df, 'covid19_horiz.gif', ???????????????????period_summary_func=summary16、添加垂直條參考線(平均值、分位數等)
# 設置垂直條數值,分位數def func(values, ranks): return values.quantile(.9)# 添加垂直條bcr.bar_chart_race(df, 'covid19_horiz.gif', ???????????????????perpendicular_bar_func=func)17、設置柱狀圖顏色
'dark12' is the default colormap. If there are more than 10 columns,?then the default colormap will be 'dark24'
# 設置柱狀圖顏色 bcr.bar_chart_race(df, 'covid19_horiz.gif', cmap='accent')18、顏色不重復
#filter_column_colors保證顏色不重復bcr.bar_chart_race(df, 'covid19_horiz.gif', cmap='accent', filter_column_colors=True)19、中文支持配置
中文配置只需在第三方庫的_make_chart.py文件中,加入如下三行代碼。
#中文顯示plt.rcParams['font.sans-serif'] = ['SimHei'] #Windowsplt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] #Macplt.rcParams['axes.unicode_minus'] = False如果上述方法行不通,請參考文章:https://ask.hellobi.com/blog/safa/36673
20、自定義顏色
此外通過在「_colormaps.py」文件中添加顏色信息,經cmap引用,即可自定義配置顏色。
colormaps?=?{"new_colors": ['#ff812c','#ff5a5a','#00c5d2','#a64dff','#4e70f0','#f95dba','#ffce2b' ] }獲取文章中的數據,關注公眾號【AI入門學習】,回復「條形圖」即可
【完】
獲取一折本站知識星球優惠券,復制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【Python基础】刷爆网络的动态条形图,3行Python代码就能搞定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python基础】Python处理文件
- 下一篇: 【NLP】一文搞懂NLP中的对抗训练