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>

        介紹三種繪制時(shí)間線圖的方法

        共 2506字,需瀏覽 6分鐘

         ·

        2022-01-14 01:18

        前面分享過(guò)一篇自動(dòng)化制作《歷史上的今天》時(shí)間線圖片的文章,小伙伴們普遍反映還不錯(cuò),尤其是制作時(shí)間線的方法,還是非常巧妙的。今天我們?cè)賮?lái)分享幾種不同的制作方法,大家可以自行比較下各種方法的優(yōu)劣

        Matplotlib 制作

        Matplotlib 作為 Python 家族最為重要的可視化工具,其基本的 API 以及繪制流程還是需要掌握的。尤其是該庫(kù)的靈活程度以及作為眾多工具的基礎(chǔ),重要性不言而喻

        下面我們來(lái)看下該如何繪制一個(gè)時(shí)間線圖表

        導(dǎo)入庫(kù)以及設(shè)置 XY 軸數(shù)據(jù)

        import?matplotlib.pyplot?as?plt
        plt.rcParams['font.sans-serif']?=?['SimHei']
        plt.rcParams['axes.unicode_minus']?=?False

        y1?=?[5,?10,?15,?20,?25,?30,?35,?40,?45,?50]
        x1?=?[4,?4,?4,?4,?4,?4,?4,?4,?4,?4]

        因?yàn)槭峭ㄟ^(guò)折線圖來(lái)實(shí)現(xiàn)時(shí)間線效果,為了達(dá)到展示一條豎線的情況,這里設(shè)置了 X 軸數(shù)值都相同,Y 軸數(shù)值等差分布

        創(chuàng)建畫布及標(biāo)題

        fig,?ax?=?plt.subplots(sharey=True,?figsize=(7,?4))
        ax.plot(x1,?y1,?label='First?line',?linewidth=3,?color='r',?marker='o',?markerfacecolor='white',?markersize=12)
        plt.title('蘿卜大雜燴')
        plt.suptitle('歷史上的今天',?fontsize=16,?color='red')

        此時(shí)效果如下


        接下來(lái)我們?cè)O(shè)置時(shí)間線兩邊的數(shù)據(jù)

        #?右側(cè)數(shù)據(jù)
        right_y_year?=?0.95
        right_y_text?=?0.9
        year_right?=?1931
        for?i?in?range(5):
        ????plt.text(0.57,?right_y_year,?str(year_right+1),?fontsize=15,?horizontalalignment='center',?verticalalignment='center',?
        ?????????????transform=ax.transAxes,?color='black')
        ????plt.text(0.75,?right_y_text,?"從百草園到三味書屋-魯迅"?+?str(i),?fontsize=15,?horizontalalignment='center',?verticalalignment='center',?
        ?????????????transform=ax.transAxes,?color='red')
        ????right_y_year?-=?0.2
        ????right_y_text?-=?0.2
        ????year_right?+=?1
        ????
        #?左側(cè)數(shù)據(jù)
        left_y_year?=?0.85
        left_y_text?=?0.8
        year_left?=?1941
        for?i?in?range(5):
        ????plt.text(0.43,?left_y_year,?str(year_left+1),?fontsize=15,?horizontalalignment='center',?verticalalignment='center',?
        ?????????????transform=ax.transAxes,?color='black')
        ????plt.text(0.2,?left_y_text,?"從百草園到三味書屋-魯迅"?+?str(i),?fontsize=15,?horizontalalignment='center',?verticalalignment='center',?
        ?????????????transform=ax.transAxes,?color='red',?url='https://www.baidu.com')
        ????left_y_year?-=?0.2
        ????left_y_text?-=?0.2
        ????year_left?+=?1

        主要使用了 text 函數(shù),為時(shí)間線軸兩邊分別添加數(shù)據(jù)

        如果我們還想要添加個(gè)人的其他信息,比如公眾號(hào)二維碼等,可以在指定位置增加圖片,同時(shí)去掉坐標(biāo)軸

        #?增加圖片
        img?=?plt.imread('二維碼.png')
        ax2?=?plt.axes((0.7,?0.1,?0.3,?0.3))
        ax2.imshow(img,?origin='lower',?alpha=0.5)
        ax2.axis('off')
        ax.axis('off')
        plt.show()

        最終效果如下


        可以看出,由于 text 函數(shù)是通過(guò)坐標(biāo)來(lái)確定文字顯示的位置的,所以我們時(shí)間線軸兩邊的數(shù)據(jù)分布還是不是特別完美,不知道是否有其他的更加方便的方法來(lái)設(shè)置,待探索。。。

        Plotly 繪制

        Plotly 作為 Python 家族另一個(gè)非常強(qiáng)大的可視化工具,同樣可以完成時(shí)間線圖的繪制

        在繪圖之前,我們先處理數(shù)據(jù)

        這里使用的數(shù)據(jù)是2020年全年的微博熱搜數(shù)據(jù)

        import?pandas?as?pd


        weibo?=?pd.read_csv("weibo_2020.csv")
        def?deal_date(frame):
        ????tmp?=?frame.split('-')
        ????return?tmp[0]?+?'-'?+?tmp[1]

        weibo['new_date']?=?weibo['date'].apply(lambda?x?:?deal_date(x))
        key_list_right?=?[]
        for?i?in?range(1,?12,?2):
        ????if?i?10:
        ????????mydate?=?'2020-0%s'?%?str(i)
        ????else:
        ????????mydate?=?'2020-%s'?%?str(i)
        ????keyword?=?weibo[weibo['new_date']?==?mydate].sort_values(by='searchCount',?ascending=False)['keyword'].tolist()[0]
        ????searchCount?=?weibo[weibo['new_date']?==?mydate].sort_values(by='searchCount',?ascending=False)['searchCount'].tolist()[0]
        ????mount?=?str(i)?+?'月'
        ????content?=?','.join([keyword,?str(searchCount)?+?'搜索量',?mount])
        ????key_list_right.append(content)
        print(key_list_right)

        Output:

        ['最新疫情地圖,18130201搜索量,1月',
        '肖戰(zhàn)工作室道歉,13117531搜索量,3月',
        '何鴻燊去世,15302424搜索量,5月',
        '高考作文,15647446搜索量,7月',
        '乘風(fēng)破浪的姐姐成團(tuán)之夜,8226994搜索量,9月',
        '特朗普,7310000搜索量,11月']

        可以看到,通過(guò)上面的數(shù)據(jù)處理,我們成功提取了1、3、5、7、9以及11月的當(dāng)月搜索量最高的熱搜標(biāo)題,同理可以獲取到雙月份的熱搜標(biāo)題數(shù)據(jù)

        下面開始作圖

        import?plotly.express?as?px
        import?plotly.graph_objects?as?go
        from?plotly.subplots?import?make_subplots
        import?pandas?as?pd
        from?plotly.graph_objs?import?*

        layout?=?Layout(
        ????paper_bgcolor='rgba(0,0,0,0)',
        ????plot_bgcolor='rgba(0,0,0,0)',
        ????title={'text':?'微博熱搜',?'x':?0.5},
        ????yaxis={'title':?'Proportion?(%)'}
        )
        fig?=?go.Figure(layout=layout)
        fig.add_traces([go.Scatter(x=[2,2,2,2,2,2],?y=[5,?10,?15,?20,?25,?30],?text=key_list_right,?textposition="bottom?right",?mode="lines+text"),
        ????????????????go.Scatter(x=[2,2,2,2,2,2],?y=[5,?10,?15,?20,?25,?30],?textposition="top?left",?mode="lines+text",?text=key_list_left)])?
        fig.update_traces(showlegend=False)
        fig.update_layout(xaxis=dict(visible=False),?yaxis=dict(visible=False))
        fig.show()

        通過(guò) Plotly 繪圖就相對(duì)簡(jiǎn)單很多了,直接使用 text 參數(shù)把我們得到的熱搜數(shù)據(jù)添加上即可

        最終效果如下


        效果很樸素,是因?yàn)槲覀儧](méi)有進(jìn)行過(guò)多的樣式設(shè)置,大家可以自行探索下不同樣式

        Excel 繪制

        上面的兩種方法都需要有一定的代碼基礎(chǔ),下面介紹的 Excel 方法則可以說(shuō)是人人都能完成,一起來(lái)看看吧

        先來(lái)看看最終的效果


        首先準(zhǔn)備數(shù)據(jù),我們?cè)谛陆ǖ?Excel 文檔中創(chuàng)建如下數(shù)據(jù)


        然后插入散點(diǎn)圖


        先插入一個(gè)空白散點(diǎn)圖,然后將 X 軸設(shè)置為【年份】,Y 軸設(shè)置為【位置】


        再把 Y 軸和網(wǎng)格線都刪除

        接下來(lái)我們美化一下 X 軸


        我們雙擊 X 軸,調(diào)出格式窗口,在坐標(biāo)軸選項(xiàng)標(biāo)簽中設(shè)置【單位】,將【小】改為1,設(shè)置【刻度線】,將【主刻度線】設(shè)置為交叉


        再點(diǎn)擊【油漆桶】,選擇一個(gè)線條的顏色,將寬度調(diào)整為2,將【結(jié)尾箭頭類型】調(diào)整為向右箭頭

        再接下來(lái)我們把 X 軸連接起來(lái)


        首先選擇一個(gè)散點(diǎn),添加誤差線。然后把橫向的誤差線設(shè)置為無(wú)輪廓,再選中豎向的誤差線,把【垂直誤差線】設(shè)置為負(fù)偏差,再把誤差量設(shè)置為100%



        最后再給豎向誤差線調(diào)整樣式即可

        下面開始添加數(shù)據(jù)

        我們把公司的各種大事件添加到數(shù)據(jù)表當(dāng)中


        向圖表中添加【數(shù)據(jù)標(biāo)簽】,即數(shù)據(jù)中事件那一列


        然后再去掉 Y 值即可

        最后我們還可以通過(guò) Excel 自帶的各種圖標(biāo)進(jìn)行美化操作


        好了,以上就是今天分享的所有內(nèi)容,如果對(duì)你有幫助,幫忙點(diǎn)贊在看支持哦~

        推薦閱讀


        牛逼!Python常用數(shù)據(jù)類型的基本操作(長(zhǎng)文系列第①篇)

        牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)

        牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)

        牛逼!Python錯(cuò)誤、異常和模塊(長(zhǎng)文系列第④篇)


        瀏覽 126
        點(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>
            宝贝奶好大呻吟想要A片 | 亚洲老妇交性506070 | 欧美爆插 | 丝袜美腿一区二区三区在线观看 | 国产精品综合自拍 | 精品视频第一页 | 污网站在线| 豆花在线| 精品国产精品国产自在久国产 | 操逼无码网站 |