當前位置: 首頁>>技術問答>>正文


在Python中使用Matplotlib繪製時間

有一個格式為(HH:MM:SS.mmmmmm)的時間戳數組和另一個浮點數數組,每個浮點數都對應於時間戳timestamp數組中的一個時間戳。

可以使用Matplotlib繪製x軸上的時間和y軸上的數字嗎?

我試圖這樣做,但不知到什麽原因,它隻接受浮點數數組。到底應該怎麽繪製時間軸呢?

最佳解決方法

必須先將時間戳轉換為Python datetime對象(使用datetime.strptime)。然後使用date2num將日期轉換為matplotlib格式。

使用plot_date繪製日期和值:

dates = matplotlib.dates.date2num(list_of_datetimes)
matplotlib.pyplot.plot_date(dates, values)

次佳解決方法

您也可以使用pyplot.plot繪製時間戳和值對(在從字符串表示中解析它們之後)。 (這個做法,使用matplotlib版本1.2.0和1.3.1測試過)

例:

import datetime
import random
import matplotlib.pyplot as plt

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

plt.show()

產生的圖像:

python,graph,plot,matplotlib


這和散點圖一樣:

import datetime
import random
import matplotlib.pyplot as plt

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

plt.show()

產生一個類似這樣的圖像:

python,graph,plot,matplotlib

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3728.html,未經允許,請勿轉載。