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

ggplot2合并图层后保留分组图例并设置不同图例标题

保留独立图例并设置不同标题的PCA图合并方法

要实现合并后保留两个独立图例并分别设置标题,核心是让两个图层的颜色映射使用独立的尺度系统,这里推荐用ggnewscale包来实现,步骤如下:

步骤1:安装并加载所需包

install.packages(c("ggplot2", "patchwork", "ggnewscale"))
library(ggplot2)
library(patchwork)
library(ggnewscale)

步骤2:合并图层并设置独立图例

不用分开绘制两个独立图对象,直接在同一个ggplot中依次添加图层,通过new_scale_color()分隔两个颜色尺度:

# 创建合并后的图
combined_plot <- ggplot() +
  # 第一个数据集的点,设置第一个图例标题
  geom_point(data = dataWithLang, aes(x = PC1, y = PC2, color = PopLang), alpha = 0.45) +
  scale_color_discrete(name = "语言分组") +  # 自定义第一个图例标题
  
  # 开启新的颜色尺度,让后续图层的color映射独立于之前的设置
  new_scale_color() +
  
  # 第二个数据集的点,设置第二个图例标题
  geom_point(data = dataWithLocang, aes(x = PC1, y = PC2, color = PopLoc)) +
  scale_color_discrete(name = "地域分组")  # 自定义第二个图例标题

# 查看最终合并图
combined_plot

原理说明

  • new_scale_color()会重置颜色映射的尺度规则,让后续图层的color美学不再和之前的图层合并图例,从而生成两个独立的颜色图例。
  • 用scale_color_discrete()(如果是连续型数据则用scale_color_continuous())可以分别为两个图例设置自定义标题。

如果不想额外安装包,也可以将其中一个图层的美学映射改为shape或fill(需配合支持填充的点形状,比如shape=21)来实现双图例,但ggnewscale的方法更直观,且能保持两个图层都用颜色区分分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:13:29