Расстояние между осями при построении графика с помощью pandas timedelta

Я пытаюсь построить некоторые столбцы в кадре данных, который имеет значения pandas timedelta в качестве индекса. Когда я рисую его, все точки равномерно распределены по оси x, даже если между ними есть переменное время.

time = [pd.Timestamp('9/3/2016')-pd.Timestamp('9/1/2016'),pd.Timestamp('9/8/2016')-pd.Timestamp('9/1/2016'),pd.Timestam\p('9/29/2016')-pd.Timestamp('9/1/2016')]
df = pd.DataFrame(index=time, columns=['y'],data=[5,0,10])
df.plot()
plt.show()

Неверный интервал

Если вместо этого я использовал даты вместо timedelta, я получил правильный интервал по оси x:

time = [pd.Timestamp('9/3/2016'),pd.Timestamp('9/5/2016'),pd.Timestamp('9/20/2016')]
df = pd.DataFrame(index=time, columns=['y'],data=[5,0,10])
df.plot()
plt.show()

Правильный интервал

Есть ли способ заставить это отображаться правильно?


person Mike J    schedule 15.11.2016    source источник


Ответы (1)


На данный момент он еще не полностью поддерживается пандами. См. эту проблему на Github для получения дополнительной информации.

Для быстрого обходного пути вы можете использовать:

import matplotlib.pyplot as plt
plt.plot(df.index, df.values)

Вот пример того, как вы можете поиграть с тиками, чтобы сделать их читабельными (а не просто очень большое число):

import matplotlib as mpl
import datetime
fig, ax = plt.subplots()
ax.plot(df.index, df.values)
plt.xticks([t.value for t in df.index], df.index, rotation=45)
plt.show()

результат

person Julien Marrec    schedule 16.11.2016
comment
Просто добавил пример того, как вы можете отформатировать галочки после этого... потому что по умолчанию они будут выглядеть мусором (в основном очень большое количество...). Если это полезно, пожалуйста, проголосуйте за ответ и примите его, если он решил вашу проблему. Спасибо! - person Julien Marrec; 16.11.2016