
作者:小伍哥
來源:AI入門學(xué)習(xí)
上次出了一個(gè)在網(wǎng)站「Flourish」畫動(dòng)態(tài)條形圖的文章【動(dòng)態(tài)條形圖視頻教程】,需要登錄網(wǎng)址很多人可能覺得不方便,現(xiàn)在有大佬出了個(gè)python包,只需幾行代碼就能搞定動(dòng)態(tài)條形圖,非常強(qiáng)大,給大家分享下。
一、前期準(zhǔn)備工作
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_race
0.2版本需要到github安裝
壓縮包解壓到軟件安裝目錄的/site-packages目錄下,利用命令行安裝即可
3、安裝ffmpeg、ImageMagick
ffmpeg包:不然無法輸出 mp4/m4v/mov/等格式的視頻,該包比較復(fù)雜,需要配置變量環(huán)境,具體操作可以看看這個(gè)博客:
https://baijiahao.baidu.com/s?id=1660327134602942057&wfr=spider&for=pc
ImageMagick包:如果你要?jiǎng)?chuàng)建GIF,需要安裝這個(gè)包ImageMagick,安裝方法與上述類似。
二、官方數(shù)據(jù)畫圖
上述準(zhǔn)備都做好了,那就可以開始畫圖了,利用官方提供的數(shù)據(jù),直接加載就可以,我的數(shù)據(jù)下載沒成功,所以自己上傳數(shù)據(jù)繪圖,等下回講怎么自己上傳數(shù)據(jù)。
#加載包 import bar_chart_race as bcr #下載數(shù)據(jù) df = bcr.load_dataset('covid19_tutorial') #生成GIF圖像 bcr.bar_chart_race(df, 'covid19_horiz.gif') #生成MP4 bcr.bar_chart_race(df, 'covid19_horiz.MP4')
生成的GIF
生成的MP4
三、自己的數(shù)據(jù)畫圖
如果是自己的數(shù)據(jù),要進(jìn)行一定的處理,達(dá)到畫圖格式,不然會(huì)報(bào)錯(cuò)。
#讀取數(shù)據(jù) df = pd.read_csv('data.csv') #格式處理,需要把日期date轉(zhuǎn)換成索引,不能作為單獨(dú)一列 df = df.set_index(keys='date') 作者也提供了兩個(gè)處理數(shù)據(jù)的函數(shù) bcr.prepare_wide_data bcr.prepare_long_data
原始數(shù)據(jù)
處理后數(shù)據(jù)(date轉(zhuǎn)換成了索引)
四、圖形美化
作者還提供了很多參數(shù),對圖形進(jìn)行調(diào)整和美化,輸出的圖形更漂亮
1、橫轉(zhuǎn)縱 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、類目數(shù)限制,此處設(shè)置為最多出現(xiàn)6條
# 設(shè)置最多能顯示的條目數(shù) n_bars=6 bcr.bar_chart_race(df, 'covid19_horiz.gif', n_bars=6)
4、設(shè)置展示類目
# 選取如下5個(gè)國家的數(shù)據(jù) fixed_order bcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_order=['Iran', 'USA', 'Italy', 'Spain', 'Belgium'])
5、固定坐標(biāo)軸
#設(shè)置數(shù)值的最大值,固定數(shù)值軸fixed_max bcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_max=True)
6、改變圖像幀數(shù)
#圖像幀數(shù),數(shù)值越小,越不流暢。越大,越流暢。默認(rèn)為10比較流暢,改為3就有些卡頓了 bcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=3)
7、設(shè)置幀率,默認(rèn)為500ms
# 設(shè)置20幀的總時(shí)間,此處為200ms bcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=20, period_length=200)
8、設(shè)置每幀增加的標(biāo)簽時(shí)間,默認(rèn)為False
# 輸出gif bcr.bar_chart_race(df, 'covid19_horiz.gif', interpolate_period=True)
9、繪圖屬性設(shè)置
# figsize-設(shè)置畫布大小,默認(rèn)(6, 3.5) # dpi-圖像分辨率,默認(rèn)144 # label_bars-顯示柱狀圖的數(shù)值信息,默認(rèn)為True # period_label-顯示時(shí)間標(biāo)簽信息,默認(rèn)為True # title-圖表標(biāo)題 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、配置標(biāo)簽文字大小
# bar_label_size-柱狀圖標(biāo)簽文字大小 # tick_label_size-坐標(biāo)軸標(biāo)簽文字大小 # title_size-標(biāo)題標(biāo)簽文字大小 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、全局字體屬性設(shè)置
# 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、透明度,邊框等設(shè)置
# bar_kwargs-條形圖屬性設(shè)置參數(shù) bcr.bar_chart_race(df, 'covid19_horiz.gif', bar_kwargs={'alpha': .2, 'ec': 'black', 'lw': 3})
13、日期格式設(shè)置
# 設(shè)置日期格式,默認(rèn)為'%Y-%m-%d' bcr.bar_chart_race(df, 'covid19_horiz.gif', period_fmt='%b %-d, %Y')
14、改日期標(biāo)簽為數(shù)值格式
# 設(shè)置日期標(biāo)簽為數(shù)值 bcr.bar_chart_race(df.reset_index(drop=True), 'covid19_horiz.gif', interpolate_period=True, period_fmt='Index value - {x:.2f}')
15、添加匯總統(tǒng)計(jì)
#設(shè)置文本位置、數(shù)值、大小、顏色等 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=summary
16、添加垂直條參考線(平均值、分位數(shù)等)
# 設(shè)置垂直條數(shù)值,分位數(shù) def func(values, ranks): return values.quantile(.9) # 添加垂直條 bcr.bar_chart_race(df, 'covid19_horiz.gif', perpendicular_bar_func=func)
17、設(shè)置柱狀圖顏色
'dark12' is the default colormap. If there are more than 10 columns, then the default colormap will be 'dark24'
# 設(shè)置柱狀圖顏色 bcr.bar_chart_race(df, 'covid19_horiz.gif', cmap='accent')
18、顏色不重復(fù)
#filter_column_colors保證顏色不重復(fù) bcr.bar_chart_race(df, 'covid19_horiz.gif', cmap='accent', filter_column_colors=True)
19、中文支持配置
中文配置只需在第三方庫的_make_chart.py文件中,加入如下三行代碼。
#中文顯示 plt.rcParams['font.sans-serif'] = ['SimHei'] #Windows plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] #Mac plt.rcParams['axes.unicode_minus'] = False
20、自定義顏色
此外通過在「_colormaps.py」文件中添加顏色信息,經(jīng)cmap引用,即可自定義配置顏色。
colormaps = { "new_colors": [ '#ff812c', '#ff5a5a', '#00c5d2', '#a64dff', '#4e70f0', '#f95dba', '#ffce2b']}
——熱門課程推薦:
想從事業(yè)務(wù)型數(shù)據(jù)分析師,您可以點(diǎn)擊>>>“數(shù)據(jù)分析師”了解課程詳情;
想從事大數(shù)據(jù)分析師,您可以點(diǎn)擊>>>“大數(shù)據(jù)就業(yè)”了解課程詳情;
想成為人工智能工程師,您可以點(diǎn)擊>>>“人工智能就業(yè)”了解課程詳情;
想了解Python數(shù)據(jù)分析,您可以點(diǎn)擊>>>“Python數(shù)據(jù)分析師”了解課程詳情;
想咨詢互聯(lián)網(wǎng)運(yùn)營,你可以點(diǎn)擊>>>“互聯(lián)網(wǎng)運(yùn)營就業(yè)班”了解課程詳情;
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03