<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2506字,需瀏覽 6分鐘

           ·

          2022-01-14 01:18

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

          Matplotlib 制作

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

          下面我們來看下該如何繪制一個(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)槭峭ㄟ^折線圖來實(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í)效果如下


          接下來我們?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ù)是通過坐標(biāo)來確定文字顯示的位置的,所以我們時(shí)間線軸兩邊的數(shù)據(jù)分布還是不是特別完美,不知道是否有其他的更加方便的方法來設(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月']

          可以看到,通過上面的數(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()

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

          最終效果如下


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

          Excel 繪制

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

          先來看看最終的效果


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


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


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


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

          接下來我們美化一下 X 軸


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


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

          再接下來我們把 X 軸連接起來


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



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

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

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


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


          然后再去掉 Y 值即可

          最后我們還可以通過 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)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人三级片 | 精品国产一区二区三区久久久狼,91精品一 | 手机免费在线看a | 亚洲国产精品福利一区 | 91精品无码人妻系列 |