You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将corrplot混合矩阵与ggplot2图形合并到同一面板?

解决基础绘图(corrplot叠加图)与ggplot2图形的面板合并问题

你已通过corrplot的add=TRUE参数叠加生成混合相关矩阵,希望用patchwork将其与ggplot2图形合并到同一面板。由于叠加后的基础图是一个整体,可通过以下步骤实现:

实现步骤

  1. 保留叠加后的完整基础图:你已用recordPlot()将叠加后的混合矩阵保存为corHybridPlot,这一步确保两个corrplot的叠加效果被完整记录。
  2. 转换基础图为ggplot兼容对象:使用ggplotify::as.ggplot()将记录的绘图对象转换为ggplot可识别的grob,使其能被patchwork处理。
  3. 用patchwork合并图形:直接使用patchwork的拼接语法(如|横向拼接、/纵向拼接)组合转换后的图与ggplot2图形。

完整代码示例

library(tidyverse)
library(corrplot)
library(patchwork)
library(ggplotify) # 需加载该包实现格式转换

data(mtcars)

# 生成混合相关矩阵
M32 <- cor(mtcars)
M21 <- cor(mtcars[-c(3, 8, 9, 18, 19, 20, 21, 26, 27, 28, 32), ])

corrplot::corrplot(M32, method = "color",
                   type = "lower",
                   order = "original",
                   hclust.method = "ward.D2", 
                   col = COL2('PiYG'),
                   tl.pos = "lt", 
                   is.corr = FALSE,
                   diag = TRUE, 
                   tl.col = "black",
                   addrect = 2,
                   rect.col = "black",
                   addCoef.col = "white",
                   cl.cex = 0.8,
                   cl.align.text = 'l',
                   cl.pos = "b", 
                   number.cex = 0.75
                   )

corrplot::corrplot(M21, method = "color",
                   type = "upper",
                   order = "original",
                   add = TRUE,
                   hclust.method = "ward.D2", 
                   col = COL2('PiYG'),
                   tl.pos = "n", 
                   is.corr = FALSE,
                   diag = TRUE, 
                   tl.col = "black",
                   addrect = 2,
                   rect.col = "black",
                   addCoef.col = "white",
                   cl.cex = 0.8,
                   cl.align.text = 'l',
                   cl.pos = "n", 
                   number.cex = 0.75
                   )

corHybridPlot <- recordPlot()

# 生成ggplot2图形
p1 <- ggplot(mtcars, aes(wt, mpg)) +
    geom_point(color = "red") +
    geom_text(aes(label = rownames(mtcars))) +
    theme_classic(base_size = 16)

# 转换基础图并合并
cor_gg <- as.ggplot(corHybridPlot)
# 横向拼接示例,可替换为 / 实现纵向拼接
cor_gg | p1
# 可选:调整布局比例并添加标题
cor_gg + p1 + plot_layout(widths = c(2,1)) + plot_annotation(title = "混合相关矩阵与散点图")

注意事项

  • 运行recordPlot()前,确保两个corrplot的叠加效果已正确显示在绘图设备中,不要提前关闭设备。
  • 若转换后图形排版失衡,可通过plot_layout()调整面板比例,比如plot_layout(widths = c(2,1))设置两个面板的宽度比。

内容的提问来源于stack exchange,提问作者doctorate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:35:04