label pandas серия сводной таблицы в pyplot - PullRequest
0 голосов
/ 14 июля 2020

У меня есть сводная таблица pandas. Мне нужно сделать линейную диаграмму, где каждая серия будет помечена из столбца сводной таблицы.

self.VergebenDF = pd.read_sql_table(
                  "vergeben",
                  columns = ['vergeben_no', 'b_nummer', 't_datum', 'b_dauer', 'b_art'],
                  con=self.Engine)
    names = {1: "Alex", 2: "Olga", 3: "Vasya"}

    self.VergebenDF["month"] = self.VergebenDF.t_datum.dt.strftime('%m.%Y')
    self.VergebenDF["b_name"] = self.VergebenDF.b_nummer.map(names)

    pvt = self.VergebenDF.pivot_table(index=["month"], columns=["b_name"], values="b_dauer", aggfunc="sum", fill_value=0)

    self.axes.title.set_text('First Plot')
    self.axes.plot(pvt)
    self.axes.legend(loc='upper left')

Итак, мне нужны 3 строки с соответствующими легендами: Alex, Olga, Vasya.

Я пробовал так:

self.axes.plot(pvt, label=list(names.values()))

Но результат не такой, как ожидалось:

введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 16 июля 2020

Просто позвольте pandas обрабатывать имена, построив сводную таблицу с помощью функции pandas.DataFrame.plot. Чтобы избежать создания отдельного графика, передайте объект осей функции построения.

Итак, в вашем случае строка в вашем коде, которая строит графики, будет выглядеть так:

pvt.plot(ax=self.axes)
0 голосов
/ 14 июля 2020

В качестве решения я нашел способ построить все столбцы один за другим:

for name in names.values():
    self.axes.plot(pvt[name], label=name)

введите описание изображения здесь

Может быть, вы знаете, как построить все столбцы из сводных таблиц одной командой.

...