Отображение легенды морской кластерной карты, соответствующей цветам строк - PullRequest
0 голосов
/ 19 июня 2020

'' 'Для простоты воспользуемся набором данных iris. Я хотел бы добавить легенду, соответствующую каждому виду его цветового кода (синий, зеленый, красный в этом примере). Кстати, по следующим ссылкам я обнаружил похожие проблемы, но они были немного сложнее. Как express классы на оси тепловой карты в Seaborn

Решение, предложенное в цвет строки кластерной карты Seaborn с легендой , работало бы, если бы не df [[ 'тип ткани', 'метка']] при определении легенды_TN, я не уверен, как определить метку аналогичным образом, например, iris ['разновидности', 'xxxx'] Заранее благодарим вас за помощь. '' '

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

iris = sns.load_dataset('iris')
species = iris.pop('species')


lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors)
plt.show()

1 Ответ

1 голос
/ 19 июня 2020

Следуя примерам в docs , можно создать собственную легенду как:

from matplotlib.patches import Patch

handles = [Patch(facecolor=lut[name]) for name in lut]
plt.legend(handles, lut, title='Species',
           bbox_to_anchor=(1, 1), bbox_transform=plt.gcf().transFigure, loc='upper right')

example plot

...