Pandas и Matplotlib: Не удается заставить стек работать для использования Matplotlib на фрейме данных - PullRequest
0 голосов
/ 28 июня 2018

У меня есть объект Dataframe из SQL-запроса, который выглядит следующим образом:

            Frage/Diskussion          ...           Wissenschaft&Technik
date                                  ...                               
2018-05-10                13          ...                              6
2018-05-11                28          ...                              1
2018-05-12                11          ...                              2
2018-05-13                21          ...                              3
2018-05-14                30          ...                              4
2018-05-15                38          ...                              5
2018-05-16                25          ...                              7
2018-05-17                23          ...                              2
2018-05-18                24          ...                              4
2018-05-19                31          ...                              4

[10 rows x 6 columns]

Я хочу визуализировать эти данные с помощью стекового графика Matplotlib в python.

Что работает в следующей строке:

df.plot(kind='area', stacked=True)

Не работает следующая строка:

plt.stackplot(df.index, df.values)

Ошибка с последней строкой:

«Ошибка значения: не удалось передать операнды вместе с фигурами (10,) (6,)»

Очевидно, что последняя строка с 10 строками по 6 столбцов передается в функцию построения графиков ... и я не могу от нее избавиться.

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

plt.stackplot(df.index.values, df['Frage/Diskussion'], df['Humor'], df['Nachrichten'], df['Politik'], df['Interessant'], df['Wissenschaft&Technik'])

1 Ответ

0 голосов
/ 28 июня 2018

Ваша проблема здесь в том, что df.values это массив столбец за строкой. Чтобы получить форму, которую вы хотите, вам нужно перенести ее. К счастью, это легко. Заменить df.values на df.values.T! Так в вашем коде замените:

plt.stackplot(df.index,df.values)

с

plt.stackplot(df.index,df.values.T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...