1

我有一个包含 20 行的 Pandas DataFrame,按日期时间索引:

df.tail()
                     units       value
time        
2013-08-30T13:01:12  vehicles/h  662
2013-08-30T13:06:12  vehicles/h  701
2013-08-30T13:11:13  vehicles/h  477
2013-08-30T13:16:13  vehicles/h  179
2013-08-30T13:21:13  vehicles/h  576

我正在使用 matplotlib 绘制它,如下所示:

ax = ls.plot(color='CC00CC')
# Only show hours and minutes
ax.set_xticklabels(
    [dt.strftime("%H:%M:%S") for dt in ls.index.to_datetime()])
plt.setp(ax.get_yticklabels(), fontsize=8)
ax.set_ylabel("Counts")
ax.set_xlabel("5-minute intervals on %s" % (datetime.datetime.today().strftime("%d/%m/%Y")))
plt.title("Vehicles")
plt.tight_layout()

结果如下图:

在此处输入图像描述

但只有前几次显示为 x 刻度。最右边的 x 刻度应标记为 12:21:13,并且应显示更多中间刻度。我做错了什么?

4

1 回答 1

2

事实证明,我实际上并没有time正确地将列转换为 DateTimeIndex。这样做正确地修复了它:

这是我的时间列的样子:

df['time'][0]
>> u'2014-03-04T19:01:11'

像这样转换:

# convert to DateTimeIndex, convert to UTC, and sort
df['time'] = pd.to_datetime(df['time'], format="%Y-%m-%dT%H:%M:%S")
df = df.set_index('time').tz_convert('UTC').sort()
于 2013-08-30T12:52:40.543 回答