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

如何在ggplot2中让geom_point匹配按fill分组的geom_boxplot?

ggplot2 图表样式修改方案

核心调整步骤及代码优化

针对你需要修改的图表样式,以下是具体的代码调整说明:

1. 修复基础调用错误

首先修正read.csv的写法错误,需要传入文件路径字符串而非变量名:

# 替换为你的实际文件路径,若文件在工作目录下直接写文件名即可
IGFpercent_P <- read.csv("IGFpercent_P.csv")
deter_P <- read.csv("deter_P.csv")

2. 实现箱线图并列+点对应分组

当前箱线图在同一x轴分组下重叠,需添加position_dodge让不同period的箱线图并列,同时让红色叉号点对应到各自的分组位置:

library("ggplot2")

IGFpercent_P$catchment <- 
  factor(IGFpercent_P$catchment,levels=c("dragon","flat","nei","jem","peak"))
# 同步deter_P的因子层级,避免点位置错位
deter_P$catchment <- factor(deter_P$catchment,levels=c("dragon","flat","nei","jem","peak"))

# 假设deter_P包含period列,若没有需先确认每个叉号对应的分组并补充该列
ggplot() +
  # 箱线图设置并列布局,调整宽度优化视觉效果
  geom_boxplot(data=IGFpercent_P,
               aes(x = catchment, y = percentage, fill = period),
               outlier.shape = NA,
               position = position_dodge(width = 0.8),
               width = 0.7) +
  # 红色叉号点同步并列位置,绑定period分组确保对应正确
  geom_point(data=deter_P,
             aes(x=catchment, y=percentage, group = period),
             shape = 4, colour = "red", size = 3,
             position = position_dodge(width = 0.8)) +
  theme_bw() +
  theme(
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(), # 移除x轴方向网格线
    axis.title = element_text(size=13, color="black"),
    axis.text = element_text(size=13, color="black"),
    legend.position = "top", # 图例移至顶部匹配目标样式
    legend.title = element_text(size=13),
    legend.text = element_text(size=13)
  ) +
  # 自定义坐标轴标签,可按需修改
  labs(x = "Catchment", y = "Percentage") +
  # 自定义填充色,匹配目标样式配色
  scale_fill_manual(values = c("#4A7BC6", "#E66153"))

3. 额外适配说明

  • 若deter_P无period列,需先确认每个红色叉号对应的period分组,补充该列后再使用上述代码,否则点无法对应到正确的箱线图位置
  • 可根据目标样式微调width、size等参数,优化图表视觉比例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:53:15