如何在热力图中显示图例?

9
问题实际上非常简单,但我无法找到解决方法。
如何绘制热力图及其图例,即表示所绘制的最小值和最大值的颜色比例条?
我阅读了heatmap()函数的帮助,并使用基本的R语言,如此处所述: r-graph-gallery.com heatmaps 这就是我正在做的。
heatmap(as.matrix(dataSet[, -1]), Colv = NA, Rowv = NA, scale="column", xlab="something", ylab="", main="A title", labRow=dataSet$labels, labCol=colnames(dataSet[, -1]), col= colorRampPalette(brewer.pal(8, "Oranges"))(25))

它的运行非常完美,但我仍然想绘制一个图例。有什么方法可以做到这一点吗?

这是我正在处理的数据集的样本。第一行是标题。

labels  6   1   4   8   3   2   9   7   5
aaa1    2   2   11  0   0   0   0   0   0
aaa2    3   3   16  0   0   0   0   0   0
aaa3    1   4   15  0   0   0   0   0   0
aaa4    1   6   17  0   0   0   0   0   4
aaa10   1   2   16  0   0   0   0   0   0
bbb11   1   0   2   0   1   2   1   0   0
bbb12   0   1   10  1   0   1   2   3   0
bbb13   1   0   0   0   2   0   0   0   0
1个回答

11
你需要将 legend 函数作为单独的一行添加。
library(RColorBrewer)

dataSet<-read.table(header=TRUE, text="labels  6   1   4   8   3   2   9   7   5
aaa1    2   2   11  0   0   0   0   0   0
aaa2    3   3   16  0   0   0   0   0   0
aaa3    1   4   15  0   0   0   0   0   0
aaa4    1   6   17  0   0   0   0   0   4
aaa10   1   2   16  0   0   0   0   0   0
bbb11   1   0   2   0   1   2   1   0   0
bbb12   0   1   10  1   0   1   2   3   0
bbb13   1   0   0   0   2   0   0   0   0")

heatmap(as.matrix(dataSet[, -1]), Colv = NA, Rowv = NA, 
        scale="column", xlab="something", ylab="", main="A title", 
        labRow=dataSet$labels, labCol=colnames(dataSet[, -1]), 
        col= colorRampPalette(brewer.pal(8, "Oranges"))(25))

legend(x="bottomright", legend=c("min", "ave", "max"), 
     fill=colorRampPalette(brewer.pal(8, "Oranges"))(3))

enter image description here

由于您是按列缩放的,我不确定期望的范围应该是什么。在上面的示例中,我假设图例中有3个级别。为了更好地放置图例,您可以调整x选项或指定x和y坐标。有关更多详细信息,请参见?legend

4
对于连续变量呢? - Jeff Bezos
1
@DanielFreeman,如果您问的是关于图例的问题,我不认为图例能够显示连续的刻度。需要添加更多标签,让查看者在刻度值之间进行插值运算。 - Dave2e

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接