【问题标题】:Xaxis Labels not matching Data Points - Pandas/MatplotlibXaxis 标签与数据点不匹配 - Pandas/Matplotlib
【发布时间】: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


【解决方案1】:

问题是您使用的是set_xticklabels,它设置刻度标签的值独立于数据。刻度从您传入的列表中按顺序标记。

据此,我无法真正说出您要做什么,但是您看到的行为是库的“正确”行为(它完全按照您的要求进行操作,但这不是您的操作想要这样做)。

【讨论】:

  • 那么如何根据数据使 xtick 标签与 / 相关?我有同样的 xtick 标签和我传递给 Axes 对象的 scatter 方法的数据不匹配的问题。
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 2018-09-07
相关资源
最近更新 更多