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

ggplot2中颜色与点形状图例重复问题及合并需求

解决ggplot双图例合并问题

你的图表出现两个图例,核心问题是geom_line里的额外颜色映射导致图例分裂,同时shape、size、color三个美学属性的图例未统一合并。以下是修正后的代码,可实现单图例效果:

修正后的绘图代码

plot <- ggplot(data, aes(x = run, y = no2c, color = sample, shape = sample, size = sample)) + 
  labs(title = expression(paste("C"))) + 
  xlab("Run number") +
  ylab(expression(paste("NO"[2], " (mg " ~L^-1*'', ")"))) + 
  geom_point() + 
  # 统一size映射的图例名称与标签
  scale_size_manual(name = "Sample",
                    labels = c("Analyser", "Grab"),
                    values = c(F = 2, G = 4)) +
  # 移除额外颜色映射,直接指定线条颜色避免生成多余图例
  geom_line(color = "black", data = subset(data, sample == 'F')) +
  scale_x_continuous(breaks = seq(65,70,1), limits = c(65,70)) +
  scale_y_continuous(breaks = seq(0,0.6,0.1), limits = c(0,0.6)) +
  theme_bw() + 
  theme(panel.border = element_blank(), 
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black"),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
        text = element_text(size=12),
        panel.border = element_rect(colour = "black", fill=NA, size=0.5),
        legend.position = "bottom", 
        legend.title = element_text(size=12), 
        legend.text = element_text(size=12),
        axis.title.y = element_text(size=12),
        plot.title = element_text(size=14, face="bold")) +
  scale_color_manual(name = "Sample", 
                     labels = c("Analyser", "Grab"),
                     values = c("F"="black", "G"="red3")) +
  # 强制合并三个美学属性的图例
  guides(color = guide_legend(title = "Sample"),
         shape = guide_legend(title = "Sample"),
         size = guide_legend(title = "Sample"))

关键修改说明

  1. 将shape和size映射移至全局aes中,让三个美学属性(color/shape/size)均绑定到sample变量,为合并图例提供统一基础。
  2. 删除geom_line中的aes(color="no2c"),直接用color="black"指定线条颜色,避免生成额外的颜色图例。
  3. 给scale_size_manual设置与scale_color_manual一致的名称和标签,确保三个尺度的图例信息统一。
  4. 通过guides()明确指定三个图例共用同一标题,强制ggplot合并为单个图例。

修改后图表会显示一个名为“Sample”的图例,包含“Analyser”(黑色小圆圈)和“Grab”(红色大三角形)两个条目,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:30:43