【问题标题】:How to change xmax and xmin in histogram part of heatmap.2 plot from the R package gplots?如何从 R 包 gplots 更改 heatmap.2 图中直方图部分的 xmax 和 xmin?
【发布时间】:2013-08-26 09:31:01
【问题描述】:

我有多个类似于以下的热图:

X <- matrix(nrow=3, ncol=3)
X[1,] <- c(0.3, 0.4, 0.45)
X[2,] <- c(0.3, 0.7, 0.65)
X[3,] <- c(0.3, 0.4, 0.45)
colnames(X)<-c(1.5, 3, 4)
rownames(X)<-c(1.5, 3, 4)
library(gplots)

heatmap.2( X, Rowv=NA, Colv=NA, col=rev(heat.colors(256)), 
           sepcolor="black", trace="none",dendrogram="none" )

现在,为了使这种多张图看起来更相似,我怎样才能让左上角的直方图始终介于 0 和 1 之间?


根据 yuk 的回答,我制作了这个版本:

X <- matrix(nrow=3, ncol=3)
X[1,] <- c(0.3, 0.4, 0.45)
X[2,] <- c(0.3, 0.7, 0.65)
X[3,] <- c(0.3, 0.4, 0.45)
colnames(X)<-c(1.5, 3, 4)
rownames(X)<-c(1.5, 3, 4)
library(gplots)

colors <- rev(heat.colors(256))

colbr <- c(seq(0, 1, len=length(colors)+1))
heatmap.2(X, scale="none", col=colors, breaks=colbr,
          key=T, symkey=F, density.info="histogram", trace="none", Rowv=NA, Colv=NA, 
          sepcolor="black", dendrogram="none" )

现在色阶在 0 和 1 位之间,直方图仍然没有。

【问题讨论】:

  • 如果固定色标,为什么要改变直方图?为此,您必须缩放数据,因此 0.3 变为 0,0.7 变为 1。这是您想要的吗?
  • 没有。我有多个这样的图表,我希望直方图覆盖所有这些图表的相同范围。就像现在一样,对应于直方图主食的值,例如位于这些直方图的两个中间的值将不同,而是取决于它们各自的热图中的最大值和最小值。我想让它尽可能容易地比较这种类型的多个图表。但是修复色阶绝对是朝着正确方向迈出的一步,尽管我没有在这个最小的工作示例中包含一些内容。
  • 因此,如果您可以手动设置轴,那么您可以确定所有数据集的最大值并将轴设置为相同。这会实现你想要的吗?
  • 是的,这是解释我想要什么的好方法。

标签: r plot gplots


【解决方案1】:

我认为最好的方法是设置颜色中断。

这是我通常做的事情(x 是热图的矩阵):

n.col=16 # number of colors
cm = redblue(n.col) # red-white-blue colormap
mmx = min(abs(min(x)),abs(max(x))) # find min value, or you can set to a number
colbr <- c(seq(-mmx/2,mmx/2, len=length(cm)+1)) # vector of symmetric breaks
heatmap.2(x, scale="none", col=cm, breaks=colbr,
          key=T, symkey=F, density.info="histogram", trace="none")

【讨论】:

  • 这并不能完全回答问题。
猜你喜欢
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2013-02-27
  • 2013-11-19
相关资源
最近更新 更多