1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        刷爆網(wǎng)絡(luò)的動(dòng)態(tài)條形圖,3行Python代碼就能搞定

        共 5316字,需瀏覽 11分鐘

         ·

        2020-10-26 14:13

        上次出了一個(gè)在網(wǎng)站「Flourish」畫(huà)動(dòng)態(tài)條形圖的文章【動(dòng)態(tài)條形圖視頻教程】,需要登錄網(wǎng)址很多人可能覺(jué)得不方便,現(xiàn)在有大佬出了個(gè)Python包,只需幾行代碼就能搞定動(dòng)態(tài)條形圖,非常強(qiáng)大,給大家分享下。


        一、前期準(zhǔn)備工作

        1、官方參考文檔

        GitHub :https://github.com/dexplo/bar_chart_race

        說(shuō)明文檔:https://www.dexplo.org/bar_chart_race/


        2、軟件安裝(該安裝方法只能安裝0.1版本)

        pip install bar_chart_raceconda install -c conda-forge bar_chart_race

        0.2版本需要到github安裝

        壓縮包解壓到軟件安裝目錄的/site-packages目錄下,利用命令行安裝即可


        3、安裝ffmpeg、ImageMagick?

        ffmpeg包:不然無(wú)法輸出 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,安裝方法與上述類(lèi)似。


        二、官方數(shù)據(jù)畫(huà)圖

        上述準(zhǔn)備都做好了,那就可以開(kāi)始畫(huà)圖了,利用官方提供的數(shù)據(jù),直接加載就可以,我的數(shù)據(jù)下載沒(méi)成功,所以自己上傳數(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')#生成MP4bcr.bar_chart_race(df, 'covid19_horiz.MP4')

        生成的GIF

        生成的MP4



        三、自己的數(shù)據(jù)畫(huà)圖

        如果是自己的數(shù)據(jù),要進(jìn)行一定的處理,達(dá)到畫(huà)圖格式,不然會(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)換成了索引)


        下面是個(gè)我自己制作的一個(gè)視頻,金庸小說(shuō)人氣排行榜,數(shù)據(jù)獲取,關(guān)注公眾號(hào)AI入門(mén)學(xué)習(xí)】,回復(fù)「條形圖」即可獲取。

        import?osimport bar_chart_race as bcrimport?pandas?as?pddata_path = 'C:/Users/wuzhengxiang/Desktop/百度指數(shù)'os.chdir(data_path)#設(shè)置當(dāng)前工作空間print?(os.getcwd())#獲得當(dāng)前工作目錄df = pd.read_csv('金庸小說(shuō)人氣排行榜.csv')df?=?df.set_index(keys='date')# 生成mp4圖像bcr.bar_chart_race(df,                    filename='金庸小說(shuō)人氣排行榜.MP4',                     steps_per_period = 30,                    period_length = 1000,                   title='金庸小說(shuō)人氣排行榜'                  )




        四、圖形美化

        作者還提供了很多參數(shù),對(duì)圖形進(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、類(lèi)目數(shù)限制,此處設(shè)置為最多出現(xiàn)6條

        #?設(shè)置最多能顯示的條目數(shù) n_bars=6bcr.bar_chart_race(df, 'covid19_horiz.gif', n_bars=6)


        4、設(shè)置展示類(lèi)目

        # 選取如下5個(gè)國(guó)家的數(shù)據(jù) fixed_orderbcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_order=['Iran', 'USA', 'Italy', 'Spain', 'Belgium'])


        5、固定坐標(biāo)軸

        #設(shè)置數(shù)值的最大值,固定數(shù)值軸fixed_maxbcr.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í)間,此處為200msbcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=20, period_length=200)


        8、設(shè)置每幀增加的標(biāo)簽時(shí)間,默認(rèn)為False

        # 輸出gifbcr.bar_chart_race(df, 'covid19_horiz.gif', interpolate_period=True)


        9、繪圖屬性設(shè)置

        # figsize-設(shè)置畫(huà)布大小,默認(rèn)(6, 3.5)# dpi-圖像分辨率,默認(rèn)144# label_bars-顯示柱狀圖的數(shù)值信息,默認(rèn)為T(mén)rue# period_label-顯示時(shí)間標(biāo)簽信息,默認(rèn)為T(mén)rue# 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、中文支持配置

        中文配置只需在第三方庫(kù)的_make_chart.py文件中,加入如下三行代碼。

        #中文顯示plt.rcParams['font.sans-serif'] = ['SimHei']  #Windowsplt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] #Macplt.rcParams['axes.unicode_minus'] = False

        如果上述方法行不通,請(qǐng)參考文章:https://ask.hellobi.com/blog/safa/36673


        20、自定義顏色

        此外通過(guò)在「_colormaps.py」文件中添加顏色信息,經(jīng)cmap引用,即可自定義配置顏色。

        colormaps?=?{    "new_colors": [        '#ff812c',        '#ff5a5a',        '#00c5d2',        '#a64dff',        '#4e70f0',        '#f95dba',        '#ffce2b']}

        獲取文章中的數(shù)據(jù),關(guān)注公眾號(hào)【AI入門(mén)學(xué)習(xí)】,回復(fù)「條形圖」即可


        【完】

        往期精彩:

        讓你的數(shù)據(jù)動(dòng)起來(lái)!

        卷積神經(jīng)網(wǎng)絡(luò)可視化神器CNN Explainer

        Python之OS模塊39個(gè)常用函數(shù)詳解

        Python?math模塊55個(gè)函數(shù)詳解

        Python?字符串45個(gè)方法詳解

        Python 63個(gè)內(nèi)置函數(shù)超級(jí)詳解


        瀏覽 65
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男女无遮挡120秒 | 色色电源午夜亚洲 | 日日摸日日添夜夜爽97 | 精品国产18久久久久久九色 | 一区二区人妻 | 夜夜春夜夜弄 | 自拍肏屄视频 | 国产99久精在线观看V18 操你啦在线 | 内射精品 | 就要干逼网 |