我有一個格式爲(HH:MM:SS.mmmmmm)的時間戳數組和另一個浮點數數組,每個數組對應於timestamp數組中的一個值。使用Matplotlib繪製Python的時間
我可以使用Matplotlib繪製x軸上的時間和y軸上的數字嗎?
我正在嘗試,但不知何故它只接受浮點數組。我怎樣才能得到它的時間?我需要以任何方式修改格式嗎?
我有一個格式爲(HH:MM:SS.mmmmmm)的時間戳數組和另一個浮點數數組,每個數組對應於timestamp數組中的一個值。使用Matplotlib繪製Python的時間
我可以使用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()
生成類似這樣的圖像:
如何讓它工作散點圖? – andi
@andi它應該像我的例子一樣工作(將'plot'更改爲'scatter')。 – moooeeeep
我不明白爲什麼這是我遇到過的第五個問題,其中沒有人真正使用散點圖進行* TRIED * - 它不起作用。 '類型錯誤 - 無效類型提升'。 – dwanderson
7年後,這代碼已經幫助了我。 但是,我的時代仍然沒有正確顯示。
使用Matplotlib 2.0.0,我不得不從Editing the date formatting of x-axis tick labels in matplotlib由Paul H.
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
都感謝社區。
我在使用matplotlib版本:2.0.2時遇到了麻煩。從上面運行示例,我得到了一組居中堆疊的氣泡。如所期望
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot([],[])
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.show()
plt.close()
這產生具有分佈式氣泡的圖像:
plt.plot([],[])
的完整代碼段變爲:
我通過添加另一行的 「固定」 的問題。
感謝您的更新版本。 – Aventinus
它會繪製日期還是隻是時間?我只想把時間轉換爲日期時間,年份設置爲1990. – randomThought
「...轉換爲日期時間,年份設置爲1990」:您可以發佈您用於從字符串轉換爲日期時間的代碼?轉換可能有問題。回覆。圖表標籤的格式,請參閱由J. K.Seppänen提供的date_demo1鏈接。 matplot lib文檔非常好,順便說一下。 http://matplotlib.sourceforge.net/index.html – codeape
plot_dates - > matplotlib.pyplot.plot_date(日期,值) – Pete