我试图按self.__errorLog
的顺序创建line
plot
。对于下面的time
,第一个值出现在df
处,并以07:00:00
结尾。
但是00:00:40
未分配给timestamps
,并且x-axis
之后的row
首先是midnight
,而不是最后。
plotted
答案 0 :(得分:2)
您的timedelta对象已由matplotlib转换为数字表示形式。这就是为什么您没有在x轴上获得日期的原因。而且剧情按顺序进行。只是'00:40:00'
小于所有其他时间,因此被绘制为最左边的点。
您可以做的是使用日期时间格式来包含日期,这将指示00:40:00
应该排在最后,因为它将在第二天出现。您还可以使用熊猫绘图方法来简化格式设置:
d = ({
'Time' : ['2019/1/1 7:00:00','2019/1/1 10:30:00','2019/1/1 12:40:00',
'2019/1/1 16:25:00','2019/1/1 18:30:00','2019/1/1 22:40:00',
'2019/1/2 00:40:00'],
'Value' : [1,2,3,4,5,4,10],
})
df = pd.DataFrame(d)
df['Time'] = pd.to_datetime(df['Time'])
df.plot(x='Time', y='Value')
更新
要在您的时间点设置刻度线/刻度线,有些棘手。 post可以让您了解定位的工作原理。基本上,您需要使用类似matplotlib.dates.date2num
的方法来获取日期时间的数字表示形式:
xticks = [matplotlib.dates.date2num(x) for x in df['Time']]
xticklabels = [x.strftime('%H:%M') for x in df['Time']]
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels)