【发布时间】:2013-09-17 20:19:27
【问题描述】:
我想在 Pandas 中绘制一个 TimeSeries。我在 TimeSeries 中有 336 条记录。我只想每 20 个左右的数据点在 x 轴上显示一次日期/时间(TimeSeries 的索引)。
这是我尝试这样做的方法:
stats.plot()
ax.set_xticklabels(stats.index, rotation=45 )
ax.xaxis.set_major_locator(MultipleLocator(20))
ax.xaxis.set_minor_locator(NullLocator())
ax.yaxis.set_major_locator(MultipleLocator(.075))
draw()
我的 x 轴显示正确数量的标签 (18),但这些是系列中的前 18 个,它们与图中的数据点不正确对应。
【问题讨论】:
-
您的
plot调用是否使用dates 作为x 值?最简单的方法是传递实际日期,然后使用plot_date而不是plot。您仍然可以使用格式字符串和定位器来根据自己的喜好调整内容。 -
plot_date() 似乎不起作用。也许我的问题根源于其他地方。我尝试使用上述方法的原因是,当我将 DateFormatter 用于我的 x 轴时,我得到了一些疯狂的值。我的系列类型是 pandas.core.series.TimeSeries。当我使用
ax.xaxis.set_major_formatter(DateFormatter('%B %d %H %Y'))时,我原来的日期“2013-08-18 00:00:00”现在是“February 01 00 1048”。 -
您为 x 轴传递给
plot的实际值是多少? Matplotlib 期望从特定的开始时间获得float,并且有一些 tools to help with conversion 到这种格式 - 您将需要使用date2num并将输出传递给您的plot调用。 -
我正在将 TimeStamp/TimeSeries 对象传递给绘图。我觉得我以前做过这个,使用 DateFormatter() 没有问题,不需要任何更多的转换。但在这个例子中,我似乎无法让它工作。
标签: python matplotlib pandas