Как в matplotlib создать легенду по третьему столбцу
Помогите пожалуйста не могу разобраться как на графике раскрасить столбцы в цвета по третьему столбцу
нужно сделать график в matplotlib barh по полям id и sales а сами столбцы должны быть раскрашены в соответствии со столбцом group.
не пойму как это сделать, легенда вроде выводится, но столбики раскрашиваются просто по очереди...
fig, subplot = plt.subplots(figsize=(14,8))
clr = ['yellow', 'green', 'magenta']
h = subplot.barh(df.id, df.sales,
alpha = 0.3,
color = clr,
)
subplot.legend(h, df.group.unique())
subplot.set_title('Продажи', size = 18)
subplot.set_ylabel('товар', size = 14)
subplot.set_xlabel('сумма', size = 14)
plt.show()
Ответы (1 шт):
Автор решения: splash58
→ Ссылка
Можно добавить столбец с цветом и использовать его. Я там поправил легенду на уникальность элементов
fig, subplot = plt.subplots(figsize=(14,8))
# создаем словать
clr = dict(zip(pd.unique(df['group']), ['yellow', 'green', 'magenta']))
#и дополнительный столбец
df['clr'] = df['group'].apply(lambda x: clr[x])
h = subplot.barh(df.id, df.sales,
alpha = 0.3,
color = df.clr,
)
# оставим только уникальные элементы легенды
labels = dict(zip(df['group'],h))
plt.legend(labels.values(), labels.keys())
subplot.set_title('Продажи', size = 18)
subplot.set_ylabel('товар', size = 14)
subplot.set_xlabel('сумма', size = 14)
plt.show()

