<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Matplotlib 作為 Python 家族最為重要的視覺化工具,其基本的 API 以及繪製流程還是需要掌握的。尤其是該庫的靈活程度以及作為眾多工具的基礎,重要性不言而喻
下面我們來看下該如何繪製一個時間線圖表
匯入庫以及設定 XY 軸資料
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]
因為是通過折線圖來實現時間線效果,為了達到一條豎線的情況,這裡設定了 X 軸數值都相同,Y 軸數值等差分佈
建立畫布及標題:
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')
此時效果如下:
接下來我們設定時間線兩邊的資料
# 右側資料 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 # 左側資料 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 函數,為時間線軸兩邊分別新增資料
如果我們還想要新增個人的其他資訊,比如公眾號二維條碼等,可以在指定位置增加圖片,同時去掉座標軸
# 增加圖片 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 函數是通過座標來確定文字顯示的位置的,所以我們的時間線軸兩邊的資料分佈還是不是特別完美,不知道是否有其他的更加方便的方法來設定
Plotly 作為 Python 家族另一個非常強大的視覺化工具,同樣可以完成時間線圖的繪製
在繪圖之前,完美先處理資料
這裡使用的資料是2020年全年的微博熱搜資料
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月',
'肖戰工作室道歉,13117531搜尋量,3月',
'何鴻燊去世,15302424搜尋量,5月',
'高考作文,15647446搜尋量,7月',
'乘風破浪的姐姐成團之夜,8226994搜尋量,9月',
'特朗普,7310000搜尋量,11月']
可以看到,通過上面的資料處理,我們成功提取了1、3、5、7、9以及11月的當月搜尋量最高的熱搜標題,同理可以獲取到雙月份的熱搜標題資料
下面開始作圖:
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 繪圖就相對簡單很多了,直接使用 text 引數把我們得到的熱搜資料新增上即可
最終效果如下:
效果很樸素,是因為我們沒有進行過多的樣式設定,大家可以自行探索下不同樣式啊
上面的兩種方法都需要有一定的程式碼基礎,下面介紹的 Excel 方法則可以說是人人都能完成,一起來看看吧
先來看看最終的效果:
首先準備資料,我們在新建的 Excel 檔案中建立如下資料
然後插入散點圖:
先插入一個空白散點圖,然後將 X 軸設定為【年份】,Y 軸設定為【位置】,再把 Y 軸和格線都刪除
接下來我們美化一下 X 軸:
我們雙擊 X 軸,調出格式視窗,在座標軸選項標籤中設定【單位】,將【小】改為1,設定【刻度線】,將【主刻度線】設定為交叉。再點選【油漆桶】,選擇一個線條的顏色,將寬度調整為2,將【結尾箭頭型別】調整為向右箭頭
再接下來我們把 X 軸連線起來:
首先選擇一個散點,新增誤差線。然後把橫向的誤差線設定為無輪廓,再選中豎向的誤差線,把【垂直誤差線】設定為負偏差,再把誤差量設定為100%,最後再給豎向誤差線調整樣式即可
下面開始新增資料:
我們把公司的各種大事件新增到資料表當中
向圖表中新增【資料標籤】,即資料中事件那一列,然後再去掉 Y 值即可
最後我們還可以通過 Excel 自帶的各種圖示進行美化操作
好了,以上就是今天分享的所有內容,如果對你有幫助,幫忙點贊和在看支援哦~
到此這篇關於Python幾種繪製時間線圖的方法的文章就介紹到這了,更多相關Python繪製時間線圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45