Как в 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()

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

→ Ссылка