有一個格式為(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()
產生的圖像:
這和散點圖一樣:
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()
產生一個類似這樣的圖像: