You need to enable JavaScript to run this app. R语言如何按分类变量拆分散点图并添加拟合线
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何按分类变量拆分散点图并添加拟合线

实现方法

你可以根据是否需要单独编辑每张图,选择以下两种方案:

方案1:生成3张完全独立的图表,可分别导出、调整参数

该方案会为每个分类生成单独的ggplot对象,适合需要对单张图做个性化修改、分别保存的场景:

library(tidyverse)
library(readxl)

# 读取数据
Data.tibble <- read_excel('你的文件路径.xlsx')

# 按Category分类拆分数据,批量生成散点图+拟合线
plot_list <- Data.tibble %>%
  group_by(Category) %>%
  group_split() %>%
  map(~ ggplot(.x, aes(x = x, y = y)) +
        geom_point(size = 2) +
        # 如需线性拟合保留method="lm",要默认局部拟合删除该参数即可;se=TRUE可显示置信区间
        geom_smooth(method = "lm", se = FALSE, color = "red")
  )

# 调用单张图示例:第1个分类对应plot_list[[1]],第2个对应plot_list[[2]],以此类推
# 批量导出到本地示例
walk2(plot_list, unique(Data.tibble$Category), ~ ggsave(paste0("Category_", .y, ".png"), .x, width = 5, height = 4))

方案2:同一画布下生成3张子图(格式统一,生成效率高)

如果仅需要对比展示、不需要单独编辑每张图,直接使用分面语法即可实现:

Data.tibble %>%
  ggplot(aes(x = x, y = y)) +
  geom_point(size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  # 按Category分面,nrow设置行数,scales="free"可让每张图自适应坐标轴范围
  facet_wrap(vars(Category), nrow = 1, scales = "free")

你的数据结构参考:
Data.tibble

内容的提问来源于stack exchange,提问作者David N.F.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:15:08