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

如何用R的ggplot2绘制含三组不同颜色的散点图?

多组散点图绘制方案

你的数据当前是宽格式,要在同一张图展示三个组的散点,建议先转成长格式,再用工具绘图会更高效。

1. 宽格式转长格式

使用tidyr包的pivot_longer函数合并分组列(如果未安装包,先运行install.packages("tidyr")):

library(tidyr)

# 将多列分数合并为单列,同时生成分组标识
long_df <- pivot_longer(class.df,
                        cols = -class_day,  # 保留课程天数作为X轴列
                        names_to = "group",  # 新列存储分组名称
                        values_to = "score") # 新列存储分数值

转换后的数据每行对应一个观测,包含class_day(课程天数)、group(组别)、score(分数)三个字段。

2. 用ggplot2绘制(推荐)

ggplot2支持直观的分组配色和样式调整(未安装则先运行install.packages("ggplot2")):

library(ggplot2)

ggplot(long_df, aes(x = class_day, y = score, color = group)) +
  geom_point(size = 2) +  # 设置散点大小
  # 自定义各组颜色,可替换为任意颜色名称/十六进制码
  scale_color_manual(values = c(
    "control_group" = "#000000",
    "A_treatment_group" = "#E63946",
    "B_treatment_group" = "#457B9D"
  )) +
  labs(x = "课程天数", y = "分数", color = "组别") + # 设置轴标题和图例名称
  theme_minimal() # 可选:使用简洁主题

3. 用Base R绘制(无需额外包)

如果不想加载第三方包,直接用Base R原生函数实现:

# 初始化画布,先绘制对照组数据
plot(class_day, control_group, type = "p", col = "black",
     xlab = "课程天数", ylab = "分数",
     # 设置X/Y轴范围,忽略NA值
     xlim = range(class_day),
     ylim = range(c(control_group, A_treatment_group, B_treatment_group), na.rm = TRUE))

# 添加A处理组散点
points(class_day, A_treatment_group, col = "#E63946", pch = 16)

# 添加B处理组散点
points(class_day, B_treatment_group, col = "#457B9D", pch = 17)

# 添加图例区分各组
legend("topright",
       legend = c("对照组", "A处理组", "B处理组"),
       col = c("black", "#E63946", "#457B9D"),
       pch = c(1, 16, 17))

注意事项

  • 处理NA值:绘图时通过na.rm = TRUE忽略缺失值,避免报错
  • 颜色自定义:可根据需求替换颜色代码,比如用"red"、"blue"等名称,或十六进制颜色码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:50:44