Answers:
基于@GaBorgulya的响应,我建议尝试波动或水平图(也称为热图显示)。
例如,使用ggplot2:
library(ggplot2, quietly=TRUE)
k <- 100
rvals <- sample(seq(-1,1,by=.001), k, replace=TRUE)
rvals[sample(1:k, 10)] <- NA
cc <- matrix(rvals, nr=10)
ggfluctuation(as.table(cc)) + opts(legend.position="none") +
labs(x="", y="")
(此处,缺少的条目以纯灰色显示,但是可以更改默认的配色方案,也可以在图例中添加“ NA”。)
要么
ggfluctuation(as.table(cc), type="color") + labs(x="", y="") +
scale_fill_gradient(low = "red", high = "blue")
(在这里,根本不会显示缺少的值。但是,您可以添加a geom_text()
并在空白单元格中显示类似“ NA”的内容。)
hclust(…)$order
)[ stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html]对行和列进行重新排序通常会更易于查看。
mixOmics::cim
功能非常好。此处讨论了一个相关问题stats.stackexchange.com/questions/8370/…。
您的数据可能像
name1 name2 correlation
1 V1 V2 0.2
2 V2 V3 0.4
您可以使用以下R代码将长表重新排列为一个宽表
d = structure(list(name1 = c("V1", "V2"), name2 = c("V2", "V3"),
correlation = c(0.2, 0.4)), .Names = c("name1", "name2",
"correlation"), row.names = 1:2, class = "data.frame")
k = d[, c(2, 1, 3)]
names(k) = names(d)
e = rbind(d, k)
x = with(e, reshape(e[order(name2),], v.names="correlation",
idvar="name1", timevar="name2", direction="wide"))
x[order(x$name1),]
你得到
name1 correlation.V1 correlation.V2 correlation.V3
1 V1 NA 0.2 NA
3 V2 0.2 NA 0.4
4 V3 NA 0.4 NA
现在,您可以使用可视化关联矩阵的技术(至少可以解决缺失值的技术)。
reshape
包装也可能有用。拥有之后e
,请考虑类似library(reshape) cast(melt(e), name1 ~ name2)
ggfluctuation
,以前没看过!这篇文章还有其他有用的代码可以可视化这种类型的dater:stackoverflow.com/questions/5453336/…–