pandas .DataFrame.plot создает неправильные графики с двойной осью и неравномерным индексом - PullRequest
0 голосов
/ 09 января 2020

Пожалуйста, рассмотрите два графика, сгенерированных следующим сценарием. Линейный график неправильно расположен в fig2.

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

np.random.seed(0x5eed)

arr1 = np.random.randint(5, 10, 4)
arr2 = np.random.randint(15, 20, 4)
idx = [1, 3, 4, 5]
kwargs = {'marker': 'o', 'color': 'C1'}

fig1, ax11 = plt.subplots()
ax12 = ax11.twinx()
ax11.bar(idx, arr1)
ax12.plot(idx, arr2, **kwargs)
fig1.savefig('fig1.png')

df = pd.DataFrame({'foo': arr1, 'bar': arr2}, index=idx)
fig2, ax21 = plt.subplots()
ax22 = ax21.twinx()
df['foo'].plot.bar(ax=ax21)
df['bar'].plot.line(ax=ax22, **kwargs)
fig2.savefig('fig2.png')

fig1 (ожидается):

fig1

fig2 (неожиданно):

fig2

После некоторых исследований я обнаружил следующие условия для воспроизведения этой проблемы.

  • Оба используются гистограмма и линейный график (fig2 является правильным, если оба графика являются линейными)
  • Индекс неравномерен (idx = range(4) решает проблему)

Я нашел аналогичный вопрос , но это не так для меня. df.index класса Int64Index. Это ожидаемое поведение или что-то, о чем я должен сообщить трекеру проблем?

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