Формат бара (вид) не отображает правильный сюжет (matplotlib) - PullRequest
0 голосов
/ 28 февраля 2019

Мне нужно сделать график, используя три переменные.Один из них должен быть на вторичной оси Y в формате bar (вид), остальные переменные (две) должны быть на левой оси, используя простую линию.Тем не менее, я получил следующую диаграмму:

enter image description here

Когда я использую три переменные в формате line, я получаю правильный график (который не оченьполезно для визуального анализа): enter image description here

Я провел быстрый тест, используя небольшую выборку из моих данных (код ниже).Я получаю правильное изображение, когда использую формат bar для третьего.enter image description here

Интересно, что происходит?Есть ли проблема с размером данных (что я так не думаю, потому что я получаю менее 100 строк)?

df2 = pd.DataFrame({'ind':[120.29, 125.45, 127.37, 130.39, 128.30], 
                    'var1':[129.907990, 129.571185, 129.234380, 128.897574, 128.560769], 
                    'var2':[-0.074037, -0.031806, -0.014426, 0.011578, -0.002028]})

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
df2['ind'].plot(ax=ax1)
df2['var1'].plot(ax=ax1)
df2['var2'].plot(kind='bar', ax=ax2, color='r')
plt.show()

PD: Кроме того, я заметил, что на третьем рисунке линия находится за барной стойкой.Как я могу это изменить?

1 Ответ

0 голосов
/ 01 марта 2019

Я нашел решение для этого (эта ссылка мне очень помогла).По сути, он основан на индексе, который вы установили ранее.

Это новый код:

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(df2.index, df2['ind']) 
ax1.plot(df2.index, df2['var1'])
ax2.bar(df2.index, df2['var2'], color='r')
plt.show()

Надеюсь, это поможет.

...