显示与行颜色对应的seaborn clustermap的图例

Posted

技术标签:

【中文标题】显示与行颜色对应的seaborn clustermap的图例【英文标题】:Display legend of seaborn clustermap corresponding to the row colors 【发布时间】:2020-10-09 21:28:00 【问题描述】:

''' 为简单起见,让我们使用 iris 数据集。我想为每个物种添加一个与其颜色代码相匹配的图例(本例中为蓝色、绿色、红色)。 顺便说一句,我在以下链接中发现了类似的问题,但有点复杂。 How to express classes on the axis of a heatmap in Seaborn

Seaborn clustermap row color with legend 提出的解决方案本来可以工作,但是对于 df[['tissue type','label']] 在定义 legend_TN 时,我不确定如何类似地定义标签,例如 iris['species' ,'xxx'] 预先感谢您帮助我。 '''

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】:

按照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')

【讨论】:

非常感谢约翰。这正是我想要的。

以上是关于显示与行颜色对应的seaborn clustermap的图例的主要内容,如果未能解决你的问题,请参考以下文章

更改 seaborn 热图颜色条上的刻度大小

具有二进制颜色编码和原始输入注释的 seaborn 热图

10.14 plt,seaborn颜色设置

在图例中使用不同的颜色和形状 [Seaborn,Python]

可视化库-seaborn-调色板(第五天)

Python - Seaborn可视化:图形个性化设置的几个小技巧