Python Matplotlib从Pandas数据框打印x记号不正确

Python Matplotlib从Pandas数据框打印x记号不正确,python,matplotlib,pandas,Python,Matplotlib,Pandas,我有一个包含20行的熊猫数据框,按日期时间索引: 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:2

我有一个包含20行的熊猫数据框,按日期时间索引:

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,并且应该显示更多的中间记号。我做错了什么?

结果表明我没有正确地将
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()

您可能必须显式设置x记号位置。仅仅格式化它们可能不足以覆盖刻度的自动缩放/自动放置。
set\u xlabel
将标签文本与数据解耦。这是危险的,只能偶尔使用。你能提供一些更详细的信息给其他处于同样情况的人吗?是的,我现在坚持这个。这个问题/答案没有帮助。@rcompton添加了一个例子