【发布时间】:2019-11-12 02:14:01
【问题描述】:
我有一个基因表达与细胞的矩阵,并希望将它们显示为热图,这本身不是问题。然而,将所有基因显示为 yticklabels 将过于混乱且视觉上没有吸引力。因此,我将每个基因注释为属于特定功能组,并希望将每个功能组表示为一种颜色,并将它们的颜色显示在热图上,与基因出现的顺序相同。澄清一下,我不想按颜色对它们进行分组,我相信你可以使用 seaborn clustermap 做到这一点。
因此,到目前为止,我有一个 pandas 数据框,其中包含基因的多索引及其各自的功能组和细胞。
我在 Stackoverflow 和 Google 上广泛搜索了答案,但没有任何运气。这是我第一次尝试这种类型的东西,所以很遗憾我不知道从哪里开始。
因此,为了简单起见,假设您有以下数据框:
import seaborn as sns
import numpy as np
import pandas as pd
data=pd.DataFrame(np.array([(0,1,2),(4,5,6),(7,8,9)]), columns=['C1','C2','C3'], index=pd.MultiIndex.from_arrays([['Gene1','Gene2','Gene3'],['A','B','A']]))
这将产生以下结果:
C1 C2 C3
Gene1 A 0 1 2
Gene2 B 4 5 6
Gene3 A 7 8 9
现在,我可以简单地调用sns.heatmap(data)来生成热图。但是,我如何对其进行自定义,以便获得代表 A 和 B 而不是 Gene1、Gene2、Gene3 作为 yticklabels 的颜色?例如,假设 A 是蓝色,B 是绿色,我希望它显示 yticklabels(从顶部到底部)为蓝色、绿色、蓝色。
非常感谢。
【问题讨论】:
-
我认为我不了解预期的结果。是否要更改文本颜色,使
"Gene1"显示为蓝色?或者您想在开始时添加另一列以相应颜色显示像素?或者可能是完全不同的东西? -
不,不是文本颜色。它更接近后者。我基本上想要一个颜色条(可能就是他们所说的)代表与热图并列的每个功能组。这只是我从 Google 获得的一个随机示例,但我想要与此图像中的“类别”侧边栏相同的内容:(s11.postimg.cc/t4ohfiwpv/heatmap3_example.png)
标签: python pandas matplotlib colors seaborn