我有一些 R 代码可以从相关矩阵制作热图,这在我上次使用它时有效(在 2013 年 10 月 17 日更新 gplots 之前;更新到 R 版本 3.0.2 之后)。这让我觉得最近的 gplots 更新发生了一些变化,但我不知道是什么。
曾经呈现出漂亮情节的东西现在给了我这个错误:
" hclustfun(distfun(x)) 中的错误:找不到函数 "distfun" "
并且不会绘制任何东西。下面是重现该图的代码(当我使用它来教本科生如何在项目中使用热图时,被大量评论)。我尝试添加最后一行来明确设置功能,但它无助于解决问题。
编辑:我将最后一行代码更改为: ,distfun =function(c) {as.dist(1-c,upper=FALSE)}, hclustfun=hclust) 并且它有效。当我只使用“dist=as.dist”时,我得到了一个图,但它没有正确排序,并且一些树状图分支没有连接到树。不知道发生了什么,或者为什么这有效,但它似乎是。
任何帮助将不胜感激。
提前致谢,
library(gplots)
set.seed(12345)
randData <- as.data.frame(matrix(rnorm(600),ncol=6))
randDataCorrs <- randData+(rnorm(600))
names(randDataCorrs) <- paste(names(randDataCorrs),"_c",sep="")
randDataExtra <- cbind(randData,randDataCorrs)
randDataExtraMatrix <- cor(randDataExtra)
heatmap.2(randDataExtraMatrix, # sets the correlation matrix to use
symm=TRUE, #tells whether it is symmetrical or not
main= "Correlation matrix\nof Random Data Cor", # Names plot
xlab= "x groups",ylab="", # Sets the x and y labels
scale="none", # Tells it not to scale the data
col=redblue(256),# Sets the colors (can be manual, see below)
trace="none", # tells it not to add a trace
symkey=TRUE,symbreaks=TRUE, # Tells it to keep things symmetric around 0
density.info = "none"#) # can be "histogram" if you want a hist of your corr values here
#,distfun=dist, hclustfun=hclust)
,distfun =function(c) {as.dist(1-c,upper=FALSE)}, hclustfun=hclust) # new last line