Фон : Я пытаюсь нанести разное pd.Series
на одни и те же оси. Один из Series
имеет гораздо более высокую скорость передачи данных, поэтому я хочу отфильтровать его (series.resample
) и уменьшить шум. Проблема заключается в том, что после повторной выборки она больше не отображается поверх низкой скорости передачи данных Series
.
РЕДАКТИРОВАТЬ: Кроме того, данные имеют разные масштабы оси Y, поэтому я использую secondary_y=True
. Это как-то кажется важным, но я не уверен почему.
Непосредственная причина : я понял, что автоматические пределы оси X, возвращаемые из matplotlib, сильно отличаются после повторной выборки. Это означает, что базовое числовое значение индекса изменяется. Но я не могу найти ничего в документации панд по этому поводу.
РЕДАКТИРОВАТЬ: вывод 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)