![](/img/trans.png)
[英]how to plot time series where x-axis is datetime.time object in matplotlib?
[英]How to plot data, time on x-axis not datetime
id timestamp energy
0 a 2012-03-18 10:00:00 0.034
1 b 2012-03-20 10:30:00 0.052
2 c 2013-05-29 11:00:00 0.055
3 d 2014-06-20 01:00:00 0.028
4 a 2015-02-10 12:00:00 0.069
我想 plot 這些數據如下所示。 只是 x 軸上的時間,而不是日期或日期時間。
因為我想查看每小時的值。
https://i.stack.imgur.com/u73eJ.png
但是這個代碼 plot 就像這樣。
plt.plot(df['timestamp'], df['energy'])
https://i.stack.imgur.com/yd6NL.png
我嘗試了一些代碼,但它們只是格式化 X 數據隱藏日期部分和 plot 就像第二張圖一樣。
+ df['timestamp'] 是日期時間類型。
我應該怎么辦? 謝謝。
您可以將您的日期時間轉換為時間,如果您的df["timestamp"]
已經是日期時間格式,那么
df["time"] = df["timestamp"].map(lambda x: x.time())
plt.plot(df['time'], df['energy'])
如果df["timestamp"]
是字符串類型,那么您可以在前面再添加一行df["timestamp"] = pd.to_datetime(df["timestamp"])
更新:看起來 matplotlib 不接受time
類型,只需轉換為string
df["time"] = df["timestamp"].map(lambda x: x.strftime("%H:%M"))
plt.scatter(df['time'], df['energy'])
首先檢查df["timestamp"]
的類型是否為日期時間格式。 如果不
import pandas as pd
time = pd.to_datetime(df["timestamp"])
print(type(time))
然后,
import matplotlib.pyplot as plt
values = df['energy']
plt.plot_date(dates , values )
plt.xticks(rotation=45)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.