Почему бары отсутствуют в моей гистограмме с накоплением - Python с matplotlib - PullRequest
0 голосов
/ 17 февраля 2020

все.

Я пытаюсь создать гистограмму с накоплением, построенную с использованием данных временного ряда. Моя проблема - если я строю свои данные в виде временных рядов (используя линии), то все работает нормально, и я получаю (грязный) график временных рядов, который включает правильные даты. Однако, если я вместо этого попытаюсь представить это как гистограмму с накоплением, мои даты исчезнут, и ни один из моих столбцов не появится.

Я пробовал возиться с индексированием, высотой и шириной столбцов. Не повезло.

Вот мой код:

import pylab
import pandas as pd
import matplotlib.pyplot as plt

df1= pd.read_excel('pathway/filename.xls')
df1.set_index('TIME', inplace=True)


ax = df1.plot(kind="Bar", stacked=True)
ax.set_xlabel("Date")
ax.set_ylabel("Change in Yield")
df1.sum(axis=1).plot( ax=ax, color="k", title='Historical Decomposition -- 1 year -- One-Quarter Revision')
plt.axhline(y=0, color='r', linestyle='-')
plt.show()

Если я изменю ax = df1.plot(kind="Bar", stacked=True)

на ax = df1.plot(kind="line", stacked=False)

Я получу:

, если вместо этого я использую ax = df1.plot(kind="Bar", stacked=True)

, я получаю:

Есть мысли здесь?

1 Ответ

1 голос
/ 17 февраля 2020

Не зная, как выглядят данные, я бы попробовал что-то вроде этого:

#Import data here and generate DataFrame

print(df.head(5))

               A     B     C     D
DATE
2020-01-01 -0.01  0.06  0.40  0.45
2020-01-02 -0.02  0.05  0.39  0.42
2020-01-03 -0.03  0.04  0.38  0.39
2020-01-04 -0.04  0.03  0.37  0.36
2020-01-05 -0.05  0.02  0.36  0.33

f, ax = plt.subplots()
ax.bar(df.index, df['A'])
ax.bar(df.index, df['B'])
ax.bar(df.index, df['C'], bottom=df['B'])
ax.plot(df.index, df['D'], color='black', linewidth=2)
ax.set_xlabel('Date')
ax.set_ylabel('Change in Yield')
ax.axhline(y=0, color='r')
ax.set_xticks([])
ax.legend()
plt.show()

enter image description here

Редактировать: : Хорошо, я нашел способ просмотреть этот пост здесь: График Pandas DataFrame в виде бара и линии на одном графике

Попробуйте сбросить индекс так, чтобы он был отдельный столбец. В моем примере это называется «ДАТА». Затем попробуйте:

ax = df[['DATE','D']].plot(x='DATE',color='black')
df[['DATE','A','B','C']].plot(x='DATE', kind='bar',stacked=True,ax=ax)
ax.axhline(y=0, color='r')
ax.set_xticks([])
ax.set_xlabel('Date')
ax.set_ylabel('Change in Yield')
ax.legend()
plt.show()

enter image description here

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