Заставить `matplotlib.pyplot.plot ()` работать с `PeriodIndex - PullRequest
0 голосов
/ 29 мая 2019

У меня есть DataFrame (df), который имеет PeriodIndex и соответствующий столбец целых чисел (OrderQuantity). (Думайте об этом как о данных о количестве, проданном за день для определенного продукта). Чтобы сделать простую визуализацию этих данных с использованием matplotlib.pyplot.plot(), мне нужно преобразовать PeriodIndex в метку времени, в противном случае метод plot() выдает ошибку TypeError: Axis must have freq set to convert to Periods. Похоже, MatPlotLib пытается преобразовать PeriodIndex в Periods, не осознавая, что у него уже есть Periods.

Итак, пока работают:

import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure(figsize=(15,8))
plt.plot(df.index.to_timestamp(), df.OrderQuantity) // produces a valid plot

Мне интересно, есть ли лучший способ построения периодов без необходимости преобразования в метку времени, при которой пиплот внутренне преобразуется обратно в периоды до генерации графика.

1 Ответ

0 голосов
/ 30 мая 2019

pandas.DataFrame.plot() имеет ключевое слово аргумента ax, чтобы явно указать, на какие оси наносить график, чтобы вы могли создать рисунок на основе двух (или более) фреймов данных. Например,

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

np.random.seed(42)

df1 = pd.DataFrame(
    np.random.randint(5, 20, size=7), columns=['foo'],
    index=pd.period_range('2019-05-30', periods=7, freq='D')
)
df2 = pd.DataFrame(
    np.random.randint(15, 40, size=7), columns=['bar'],
    index=pd.period_range('2019-05-30', periods=7, freq='D')
)

fig, ax = plt.subplots()
df1.plot(ax=ax)
df2.plot(ax=ax)
plt.show()

даст следующий сюжет.

output image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...