簡體   English   中英

如何 plot 數據,x 軸上的時間不是日期時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM