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

ggpairs绘图自定义:不同面板个性化样式设置求助

解决方案

以下是适配你需求的修改后代码,针对每个自定义点都做了对应调整:

library(ggplot2)
library(GGally)

# 自定义右上相关系数面板函数
custom_cor <- function(data, mapping, ...) {
  ggally_cor(data, mapping, ...) +
    theme(
      panel.background = element_rect(fill = "white", color = NA),
      panel.grid = element_blank(),
      axis.text = element_blank(),
      axis.ticks = element_blank()
    ) +
    geom_text(
      aes(label = after_stat(label)),
      color = "black",  # 设置"Corr:"文本为黑色
      hjust = 0.5, vjust = 0.5,  # 文本居中对齐
      size = 5
    )
}

# 构建ggpairs绘图
p <- ggpairs(
  data = mydata,
  mapping = aes(color = de.novo, fill = de.novo), 
  columns = c("rmsd", "pLDDT (AF2)", "ipTM (AF2)", "iPAE (AF2)"),
  
  upper = list(
    continuous = custom_cor  # 使用自定义的cor面板
  ),
  
  lower = list(
    continuous = wrap("points", size = 0.2, alpha = 0.25) 
  ),
  
  diag = list(
    continuous = wrap("densityDiag", alpha = 0.5) 
  )
)+
  
  scale_fill_manual(values = c("#3E049CFF", "#C03A83FF", "#FCD225FF")) + 
  scale_color_manual(values = c("#3E049CFF", "#C03A83FF", "#FCD225FF")) +
  
  theme_bw() +
  theme(
    panel.grid.minor.x = element_blank(),
    panel.border       = element_blank(),
    # 仅保留左侧和下侧轴边框
    axis.line.x.bottom = element_line(color = "black", linewidth = 1),
    axis.line.y.left = element_line(color = "black", linewidth = 1),
    
    axis.title.y = element_text(size = 29.5, vjust = 2.5),
    axis.title.x = element_text(size = 29.5, vjust = -0.1),
    
    axis.text.y.left = element_text(color = "black", size = 23),
    axis.text.x.bottom= element_text(color = "black", size = 23),
    
    axis.ticks.y.left = element_line(linewidth=1.6, color = "black"), 
    axis.ticks.length.y.left = unit(0.18, "cm"),
    
    axis.ticks.x.bottom = element_line(linewidth=1.6, color = "black"),
    axis.ticks.length.x.bottom = unit(0.18, "cm"),
    
    strip.text.x = element_text(size = 23, color = "black"),
    strip.text.y = element_text(size = 23, color = "black"),
    
    strip.background = element_rect(color="black", fill="white", size=1.5, linetype="solid"),
    
    plot.margin = margin(22,16,7,10, "points")
  )

print(p)

关键修改说明

右上相关系数面板优化

  1. 白色背景+无网格线:通过自定义custom_cor函数,在面板内设置panel.background = element_rect(fill = "white")和panel.grid = element_blank(),直接覆盖默认的灰色背景和网格。
  2. "Corr:"文本改为黑色:在自定义函数中用geom_text指定color = "black",替换默认的灰色文本。
  3. 文本居中对齐:设置hjust = 0.5和vjust = 0.5,让相关系数文本在面板中央显示,解决偏移问题。

下侧散点图与对角密度图轴边框调整

  • 先将全局panel.border设为element_blank(),然后单独启用axis.line.x.bottom和axis.line.y.left,仅保留左侧和下侧的轴边框,自动隐藏顶部和右侧边框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:55:16