【发布时间】:2019-10-17 13:53:52
【问题描述】:
背景:我试图在同一轴上绘制不同的pd.Series。 Series 之一具有更高的数据速率,因此我想对其进行过滤(series.resample)并降低噪声。问题是,重新采样后,它不再绘制在低数据率Series 之上。
编辑:此外,数据有不同的 y 轴刻度,所以我使用的是secondary_y=True。这似乎很重要,但我不知道为什么。
近因:我意识到重新采样后从 matplotlib 返回的自动 x 轴限制非常不同。这意味着该指数的基础数值正在发生变化。但我在 pandas 文档中找不到任何关于此的内容。
编辑:以下代码 sn-p 中的 xlim() 输出演示了 x 轴限制的变化。下面的@masasa 指出,通过同时发出绘图命令,ds 和 ds_filt 将在相同的轴上成功绘图。即使secondary_y=True 也是如此。但是,我的另一个 Series 无法使用 ds_filt 成功绘制(此处未显示,因为我什至不知道如何重现失败)。
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
idx = pd.date_range('20190101', '20190103', freq='10s')
arr = np.random.randn(idx.size).cumsum()
ds = pd.Series(index=idx, data=arr)
ds.plot()
plt.xlim()
>>> (1546300800.0, 1546473600.0)
ds_filt = ds.resample('12H').mean()
ds_filt.plot()
plt.xlim()
>>> (429528.0, 429576.0)
【问题讨论】:
-
已使用解决方案here 解决。根本原因仍不清楚。