Stacked-bar в подзаговоре с использованием df с более чем двумя столбцами - PullRequest
1 голос
/ 01 мая 2019

My df содержит три столбца ежемесячных данных. Здесь - это файл.
Я хочу построить все три столбца для каждого месяца друг над другом в подзаговоре с использованием столбца с накоплением.Это один из многих кодов, которые я пробовал:

df.plot(kind='bar', stacked=True, bottom = df['Yf'])

Создает один график со странным зависанием столбцов (см. Рис. Ниже).
enter image description here

Я хочу поместить его в подзаговор, и все столбцы будут объединены.Таким образом, самые высокие точки в каждом месяце являются суммой трех параметров в соответствующих месяцах.Я также хочу иметь свободу определять, какой параметр должен идти внизу, по центру и сверху.
Я хочу что-то вроде этого.
enter image description here Поиск в Интернете, решение не найденоеще.

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Удалите bottom=df['Yf'], поскольку это говорит plt о размещении баров на высотах df['Yf']. Так просто:

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

Вы можете выбрать заказ (bottom, middle, top), вот так:

orders = ['Yf', 'Ls', 'Lc']
df[orders].plot(kind='bar', stacked=True)

поместит Yf внизу, затем Ls и Lc сверху. Выход:

enter image description here

0 голосов
/ 02 мая 2019

Этот обходной путь дает то, что мне нужно.

ax1.bar(df.index, df['Yf'],  alpha=0.7, color='green')
ax1.bar(df.index, df['Lc'],  bottom=df['Yf'], alpha=0.7, color='red')
ax1.bar(df.index, df['Ls'],  bottom=df['Yf']+df['Lc'], alpha=0.7, color='c')

enter image description here

Думал, что есть единственная линия ax1.bar решение.

...