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

如何在ggplot2双geom_points绘图中添加图例?

解决ggplot散点图添加图例的问题

你的代码直接在geom_point()中指定固定颜色(未放在aes()映射里),所以ggplot不会生成图例。要显示图例,核心是让颜色与数据变量建立映射关系,具体操作如下:

1. 把宽格式数据转为长格式

ggplot更适合处理长格式数据,用tidyr::pivot_longer()将RV和BOP两列合并,生成代表变量名的新列:

library(tidyr)
# 先添加x列到数据框,再转长格式
vehicles_long <- vehicles %>%
  mutate(x = seq(1, 108)) %>%
  pivot_longer(cols = c(RV, BOP), names_to = "指标", values_to = "数值")

2. 绘制带图例的散点图

现在只需一个geom_point(),在aes()中把color映射到新生成的变量列,同时可自定义颜色:

library(ggplot2)
scatter <- ggplot(vehicles_long, aes(x = x, y = 数值, color = 指标)) +
  geom_point(size = 2) +
  # 自定义对应颜色,和原代码保持一致
  scale_color_manual(values = c("RV" = "blue", "BOP" = "red"))
scatter

关键说明

  • 只有当颜色、形状等属性被放在aes()内部,作为数据变量的映射时,ggplot才会自动生成图例。
  • 直接在geom_point()外指定color="blue"属于固定图层样式,不会触发图例生成。

内容的提问来源于stack exchange,提问作者Alejandro Zúñiga González

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:25:26