在 R 中创建热图已成为许多帖子、讨论和迭代的主题。我的主要问题是,将 latticelevelplot()
或 basic graphics中可用解决方案的视觉灵活性与 basic's 、 pheatmap's或 gplots'image()
的轻松聚类相结合是很棘手的。这是我想要更改的一个小细节 - x 轴上标签的对角线方向。让我向您展示我在代码中的观点。heatmap()
pheatmap()
heatmap.2()
#example data
d <- matrix(rnorm(25), 5, 5)
colnames(d) = paste("bip", 1:5, sep = "")
rownames(d) = paste("blob", 1:5, sep = "")
您可以使用以下命令轻松将方向更改为对角线levelplot()
:
require(lattice)
levelplot(d, scale=list(x=list(rot=45)))
但应用聚类似乎很痛苦。其他视觉选项也是如此,例如在热图单元格周围添加边框。
现在,转向实际的heatmap()
相关功能、聚类和所有基本视觉效果都非常简单——几乎不需要调整:
heatmap(d)
这里也是:
require(gplots)
heatmap.2(d, key=F)
最后,我最喜欢的一个:
require(pheatmap)
pheatmap(d)
但所有这些都没有选择旋转标签。Manual forpheatmap
建议我可以grid.text
用来定制我的标签。这是多么令人高兴——尤其是在聚类和更改显示标签的顺序时。除非我在这里遗漏了什么......
最后,有一个旧的好image()
。我可以旋转标签,通常它是最可定制的解决方案,但没有集群选项。
image(1:nrow(d),1:ncol(d), d, axes=F, ylab="", xlab="")
text(1:ncol(d), 0, srt = 45, labels = rownames(d), xpd = TRUE)
axis(1, label=F)
axis(2, 1:nrow(d), colnames(d), las=1)
那么我应该怎么做才能获得理想的、快速的热图、聚类和方向以及漂亮的视觉特征呢?我的最佳出价正在改变heatmap()
,或者pheatmap()
不知何故,因为这两个似乎在调整方面最通用。但欢迎任何解决方案。