pheatmap使用问题

时间:2014-07-18 19:16:02

标签: r heatmap pheatmap

我正在尝试使用pheatmap并在最开始时陷入困境。

创建玩具示例:

library(pheatmap)
set.seed(1)
my.mat <- matrix(rnorm(90), nrow = 30, ncol = 30)
rownames(my.mat) <- 1:30
colnames(my.mat) <- 1:30
col.scale = colorRampPalette(c("red", "blue"), space = "rgb")(10)
breaks.size = 11
pheatmap(my.mat, color = col.scale, breaks = breaks.size, border_color = NA, cellwidth = 10, cellheight = 10)

引发此错误消息:

Error in unit(y, default.units) : 'x' and 'units' must have length > 0

它产生的情节似乎不对:

例如,我无法理解为什么右上角的细胞是白色的。我还认为设置cellwidth = 10cellheight = 10意味着获得方形单元而不是矩形。最后,如果有人知道是否有可能在热图的同一侧(和树形图的顶端)有行名和列名,那就太棒了。 enter image description here

1 个答案:

答案 0 :(得分:2)

嗯,您收到该错误的原因是您错误地使用了breaks=参数。来自?pheatmap帮助页面

  

中断:一系列覆盖mat中值范围的数字,是一个比颜色矢量长的元素。用于将值映射到颜色。如果需要将某些值映射到某些颜色,则可用于某些值。如果值为NA,则自动计算中断。

您不能像使用其他功能一样传递单个值。

此外,我不确定你所说的细胞不是正方形。你正在绘制一个30x30的方形(至少对我而言)。因为您正在进行群集,所以每个群集只能获得一种颜色。

我猜测问题的一部分可能是你只为900个单元矩阵生成了90个随机变量,因此这些值是重复的(你的数据非常结构化)。也许你的意思是

my.mat <- matrix(rnorm(900), nrow = 30, ncol = 30)

这样做会给你以下情节

enter image description here