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

如何将两个ggplot叠加合并为一张带有适配图例的完整图表

实现方法

有两种常用方案可以满足你的需求:

方案1:合并数据集生成单个原生ggplot对象(推荐)

这种方式是将两份数据整合后在同一坐标系下绘制,是最符合ggplot语法规范的实现,会自动生成匹配的图例:

# 加载依赖包
library(dplyr)
library(ggplot2)
library(ggdist)

# 给两个数据集添加分布类型标识后合并
DF_combined <- rbind(
  DF1 |> mutate(dist_type = "正态分布"),
  DF2 |> mutate(dist_type = "t分布")
)

# 绘制合并后的图表
combined_plot <- ggplot(DF_combined, aes(x = Label, y = val, fill = dist_type)) +
  stat_dotsinterval(position = position_dodge(width = 0.8), alpha = 0.7) +
  # 匹配你原有设置的填充色
  scale_fill_manual(
    values = c("正态分布" = "red", "t分布" = "green"),
    name = "分布类型" # 图例标题
  )

combined_plot

方案2:拼接已有独立ggplot对象

如果需要保留两个原始图表的独立配置,可以用patchwork包拼接为单张图,同时合并公共图例:

# 安装加载拼接工具包
# install.packages("patchwork")
library(patchwork)

# 给原有图表添加图例配置
Plot1 <- Plot1 + 
  scale_fill_identity(guide = "legend", labels = "正态分布", breaks = "red") +
  labs(fill = "分布类型")
Plot2 <- Plot2 + 
  scale_fill_identity(guide = "legend", labels = "t分布", breaks = "green") +
  labs(fill = "分布类型")

# 拼接并合并重复图例
Plot1 + Plot2 + plot_layout(guides = "collect")

两种方案的选择建议:如果需要在同一X轴分组下直接对比两类分布的差异选方案1;如果需要保留两张图的独立布局(比如各自有不同的坐标轴范围、主题配置)选方案2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:48:01