我正在尝试玩耍,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 = 10
和cellheight = 10
意味着获得正方形单元而不是矩形。最后,如果有人知道行名称和列名是否可以与树状图同时出现在热图的同一侧(即,在树状图的尖端),那将是很棒的。
好吧,得到此错误的原因是您使用了breaks=
错误的参数。从?pheatmap
帮助页面
中断:一个数字序列,覆盖了mat中值的范围,比颜色矢量长一个元素。用于将值映射到颜色。有用,如果需要将某些值映射到某些颜色,则映射到某些值。如果值是NA,则中断将自动计算。
您不能像传递其他函数那样仅仅传递一个值。
另外,我不确定您对单元格不是正方形要说些什么。您正在绘制30x30的正方形形状(至少对我来说)。因为是群集,所以每个群集只能得到一种颜色。
我猜测问题的一部分可能是您只为900个单元矩阵生成90个随机变量,因此这些值是重复的(您的数据非常结构化)。也许你是说
my.mat <- matrix(rnorm(900), nrow = 30, ncol = 30)
这样做为您提供了以下情节
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句