【发布时间】:2020-05-14 23:31:37
【问题描述】:
我很难从数据框 python 中绘制时间序列图。请在下面找到数据类型。
Time_split datetime64[ns]
Total_S4_Sig1 float64
time_split 列是 X 轴,是时间变量。总 s4 是 Y 变量,是一个浮点数。
0 15:21:00
1 15:22:00
2 15:23:00
3 15:24:00
4 15:25:00
5 19:29:00
6 19:30:00
7 19:31:00
8 19:32:00
9 19:33:00
请注意,时间序列永远不会以秒为单位,即它将始终为 00,并且数据是连续的,即它将是分钟连续数据。
数据不一定会在一小时内开始。它可以在任何时间开始,例如 15:35。我想创建一个图表,其中 X 轴主要标记将是完整的时间,例如 19:00、21:00、22:00,而次要标记应该是半小时,即 21:30、19:30。我不希望时间的秒部分被视为无用。
我想要它做的只是以 HH:MM 格式绘制小时和分钟,并在整个小时内绘制主要标记,在半小时内绘制次要标记。
keydata["Time_split"] = keydata["Time_split"].dt.time
keydata.plot(x='Time_split', y='Total_S4_Sig1')
plt.show()
这段代码导致了这样的情节。
我不希望显示秒数,我希望在全小时显示标记,在半小时显示小标记。
keydata["Time_split"] = keydata["Time_split"].dt.time
time_form = mdates.DateFormatter("%H:%M")
ax = keydata.plot(x='Time_split', y='Total_S4_Sig1')
ax.xaxis.set_major_formatter(time_form)
plt.show()
这段代码导致了这样的情节。
请注意秒数始终为 00
【问题讨论】:
-
请发布您尝试过的内容,您当前在情节中看到的内容,并将您的问题范围限制在您实际想要更改的情节上。我们很难猜出您尝试了什么,更不用说您的期望了!
-
@MichaelDelgado。请查看编辑。我真的需要一些建议。
-
所以问题只是情节本身的刻度格式?情节的其他一切都好吗?
-
如果您使用
pd.to_timedelta而不是pd.to_datetime是否可以解决问题? -
所以本质上问题是从这条线开始的。 df.Time_split = pd.to_datetime(df.Time_split, 格式 = "%H:%M:%S")。如果我要在那之后立即打印 Time_split。它将添加图中所示的无用日期。
标签: python pandas matplotlib