我有一个由不同学科的一些学生的学校成绩制作的数据框。学生也以他们的性别(F或M)为特征,这是作为他们名字的后缀(例如Anne_F,Albert_M等...)。有了这些数据,我用pheatmap()包创建了一个热图,以这种方式:
library(pheatmap)
Anne_F <- c(9,7,6,10,6)
Carl_M <- c(6,7,9,5,7)
Albert_M <- c(8,8,8,7,9)
Kate_F <- c(10,5,10,9,5)
Emma_F <- c(6,8,10,8,7)
matrix <- cbind(Anne_F, Carl_M, Albert_M, Kate_F, Emma_F)
rownames(matrix) <- c("Math", "Literature", "Arts", "Science", "Music")
print(matrix)
heatmap <- pheatmap(
mat = matrix,
cluster_rows = F,
cluster_cols = F,
cellwidth = 30,
cellheight = 30,
)
heatmap
得到了这个矩阵
和相对图:
现在,我想自动识别学生是男性还是女性,并将其作为热图中的列注解添加,以便获得这样的图表:
我想创建两个向量,一个是学生的名字:name <- c("Anne", "Carl", "Albert", "Kate", "Emma")
和一个具有相应性别的:gender <- c("F", "M", "M", "F", "F")
,但我不知道如何将名字与性别联系起来,并在热图上显示它们。
我并不是要手动将一个名字与一个性别相关联(如Anne与F,Albert与M等)。我需要将整个名字向量与相应的性别向量相关联(然后在热图上注解它们),因为它们的数量将在未来增加。
预先感谢你的帮助。
2条答案
按热度按时间sauutmhj1#
您需要在
pheatmap
中使用annotation_col
选项。n6lpvg4x2#
有了给定的数据,你可以像这样实现你想要的输出: