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

R绘图组件比例适配:对角虚线与主图趋势线对齐需求

解决方案

核心问题在于硬编码的嵌入位置和未对齐的坐标系统,以下是修正后的代码,能确保对角虚线和主图趋势线精准对齐,且缩放时比例保持不变,同时突出主散点图:

library(tibble)
library(ggplot2)
library(patchwork)
library(mvtnorm)

# 模拟数据
rho <- 0.7
sigma <- diag(2) * (1-rho) + rho
mu <- c(0.7, 0)
set.seed(2341)
uncorrelated <- mvtnorm::rmvnorm(50, mean = mu, sigma = sigma) |> data.frame()

# 主散点图:保持原有逻辑,统一坐标范围
scatterplot_uncorrelated <- ggplot(uncorrelated) +
  aes(x = X1, y = X2) +
  geom_abline(intercept = 0, slope = 1, linetype = "22", color = grey(0.7)) +
  geom_point(
    aes(fill = ifelse(X2 > X1, "weird", "expected")),
    pch = 21, color = "white", size = 3
  ) +
  scale_fill_manual(values = c("1", "2")) +
  coord_equal(xlim = c(-3, 4), ylim = c(-3, 4)) +
  guides(fill = "none") +
  theme_minimal() # 可选:简化主题,突出数据

# X轴密度图:紧凑布局,匹配主图x范围
x_den <- ggplot(uncorrelated) +
  aes(x = X1) +
  stat_density(color = "black", fill = NA, linewidth = 0.8) +
  lims(x = c(-3, 4)) +
  theme_void(base_size = 12)

# Y轴密度图:旋转后匹配主图y范围
y_den <- ggplot(uncorrelated) +
  aes(y = X2) +
  stat_density(color = "black", fill = NA, linewidth = 0.8) +
  lims(y = c(-3, 4)) +
  theme_void(base_size = 12) +
  coord_flip() # 翻转后和侧边布局匹配

# 右上角对角图:和主图坐标完全对齐,线条延续主图趋势线
diag_den <- ggplot() +
  # 延续主图的y=x虚线,使用主图的坐标范围
  geom_abline(intercept = 0, slope = 1, linetype = "22", color = grey(0.7)) +
  # 另一条对角线,匹配主图的对角范围
  geom_abline(intercept = 5.7, slope = -1, linetype = "solid", color = "black", linewidth = 0.5) +
  coord_equal(xlim = c(-3, 4), ylim = c(-3, 4)) +
  theme_void()

# Patchwork布局:精确控制各区域宽高比,避免硬编码位置
(x_den + diag_den +
    scatterplot_uncorrelated + y_den +
    plot_layout(
      widths = c(4, 1),  # 主图宽度是对角图的4倍
      heights = c(1, 4), # 主图高度是x密度图的4倍
      guides = "collect"
    ))

关键修改说明

  • 坐标系统统一:对角图diag_den使用和主图完全相同的xlim、ylim和coord_equal,确保线条斜率和位置100%匹配主图趋势线,缩放时比例不会失真。
  • 布局精确控制:用patchwork的plot_layout直接设置宽高比,代替硬编码的inset_element位置,布局会随绘图容器自动适配,保持各部分比例不变。
  • 突出主图:通过widths = c(4,1)和heights = c(1,4)让主散点图占据大部分空间,侧边图和对角图仅作为辅助信息,不抢焦点。
  • 简化线条生成:对角图直接用geom_abline生成线条,无需手动计算坐标点,避免人为误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:15:01