如何在热图中显示图例?
How to show legend in heatmap?
问题其实很简单,但是我找不到解决方法。
如何绘制热图及其图例,即带有色标的条形图代表绘制的最小值和最大值?
我阅读了 heatmap() 函数的帮助,并按照此处的说明使用 base R:
这就是我正在做的事情
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))
它运行得很好,但我仍然想绘制一个图例。有办法吗?
这是我正在使用的数据集的示例。第一行是 header.
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
您需要将 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))
由于您按列缩放,我不确定预期范围应该是多少。在上面的示例中,我假设图例中有 3 个级别。为了更好地放置图例,您可以调整 x 选项或指定 x 和 y 坐标。有关详细信息,请参阅 ?legend
。
问题其实很简单,但是我找不到解决方法。
如何绘制热图及其图例,即带有色标的条形图代表绘制的最小值和最大值?
我阅读了 heatmap() 函数的帮助,并按照此处的说明使用 base R:
这就是我正在做的事情
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))
它运行得很好,但我仍然想绘制一个图例。有办法吗?
这是我正在使用的数据集的示例。第一行是 header.
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
您需要将 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))
由于您按列缩放,我不确定预期范围应该是多少。在上面的示例中,我假设图例中有 3 个级别。为了更好地放置图例,您可以调整 x 选项或指定 x 和 y 坐标。有关详细信息,请参阅 ?legend
。