能否用patchwork将相关性图拼在一起?
我在R 中使用 corrplot 包创建了一些相关性图。现在我想把这些图合并成一个图。过去的其他图我使用过 patchwork 包,但发现对于corrplot来说,这并非开箱即用的。我知道保存一个corrplot并不会保存整张图,而是保存相关矩阵。因此,以下做法行不通:
library(corrplot)
library(patchwork)
M <- cor(mtcars)
testRes <- cor.mtest(mtcars, conf.level = 0.95)
p1 <-
corrplot(M, p.mat = testRes$p, method = 'color', order = 'hclust',
sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.9,
insig = 'label_sig', pch.col = 'grey20', col = rev(COL2('RdBu')))
p2 <-
corrplot(M, p.mat = testRes$p, method = 'color', order = 'hclust',
sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.9,
insig = 'label_sig', pch.col = 'grey20', col = rev(COL2('RdBu')))
(p1 | p2)
我知道 replayPlot() 的技巧可以重新显示corrplot,但不幸的是,它不能用来欺骗 patchwork:
p1 <- {
corrplot(M, p.mat = testRes$p, method = 'color', order = 'hclust',
sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.9,
insig = 'label_sig', pch.col = 'grey20', col = rev(COL2('RdBu')));
recordPlot()
}
p2 <- {
corrplot(M, p.mat = testRes$p, method = 'color', order = 'hclust',
sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.9,
insig = 'label_sig', pch.col = 'grey20', col = rev(COL2('RdBu')));
recordPlot()
}
(replayPlot(p1) | replayPlot(p2))
是否有一个还算合理的方法来实现这个?这个问题纯粹在于这几个包的组合是否可行。我知道我可以在 ggplot2 中“自己”重新创建corrplot,然后把得到的图插入到 patchwork 中。不过,我很喜欢 corrplot 的功能(尤其是排序),我仍然希望不必从头开始构建整张图。
解决方案
看起来这无法实现。然而,{ggcorrplot} 包的设计就是为了模仿corrplot,并提供相同的格式选项。然后这些图就可以用 {patchwork} 进行堆叠。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。