Pandas TypeError при добавлении гистограммы на график - PullRequest
0 голосов
/ 16 октября 2019

Я работаю над созданием графика с двумя линейными графиками - плановым и фактическим производством и гистограммой, показывающей разницу между ними.

Я создал линейные графики:

ax.plot_date(df['Date'], df['Planned_x'], 'b-', c='red')
ax.plot_date(df['Date'], df['Actuals'], 'b-', c='blue')

Потом позже я увидел в старом вопросе о переполнении стека, что включение гистограммы будет проще, если я переключу plot_date для обычного графика и передам ax.xaxis_date() отдельно, поскольку это все plot_date делает, и поэтому я изменил код соответствующим образом.

Все работает нормально, пока я не пытаюсь добавить гистограмму, но как только я делаю это, я так и делаю:

ax.plot(df['Date'], df['Planned_x'], 'b-', c='red')
ax.plot(df['Date'], df['Actuals'], 'b-', c='blue')
ax.bar(df['Date'], df['Delta'], c='black', width=1)
ax.xaxis_date()

... Я начинаю получать сообщения об ошибках типа: TypeError: the dtypes of parameters x (datetime64[ns]) and width (int32) are incompatible

Я оглянулся, но больше всего я нашел сообщения об ошибках на страницах matplotlib и Pandas github, и там не былорешения, которые мне помогли.

РЕДАКТИРОВАТЬ: Вот пример данных из Dataframe:

          Date   Planned_x  Actuals     ...       C2P (%)  Planned_y       Delta
766 2019-09-19  284.000000    439.0     ...           NaN        NaN -155.000000
767 2019-09-20  284.000000    469.0     ...           NaN        NaN -185.000000
768 2019-09-21  260.000000    240.0     ...           NaN        NaN   20.000000
769 2019-09-22  305.000000    229.0     ...           NaN        NaN   76.000000
770 2019-09-23  351.000000    225.0     ...      0.533391        NaN  126.000000
771 2019-09-24  387.353430      1.0     ...           NaN        NaN  386.353430
772 2019-09-25  444.317519    152.0     ...           NaN        NaN  292.317519
773 2019-09-26  475.557830    300.0     ...           NaN        NaN  175.557830
774 2019-09-27  404.524517    150.0     ...           NaN        NaN  254.524517
775 2019-09-28  355.303705    550.0     ...           NaN        NaN -194.696295

1 Ответ

1 голос
/ 16 октября 2019

Я использовал ваши данные и проиндексировал столбец даты, пометив ".set_index ('Date')"

       df = pd.DataFrame(data,columns=['Date','Planned_x','Actuals','C2P','Planned_y','Delta']).set_index('Date')

Я предполагаю, что у вас уже есть некоторый код для прикрепления платы plt к вашим данным, например:

       ax = plt.subplot(111)

Затем вы обманываете matplotlib, говоря:

       plt.bar(df.index, df.Delta)

Помните, что ваш индекс - это столбец вашего фрейма данных Дата.

enter image description here

Единственная проблема, которую я вижу здесь, - путаница с метками даты, может быть, вам нужно выбрать отображение уменьшенного количества данных или около того.

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