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

如何在ggplot中集成filter函数,筛选单个ID绘制子ID相关指标图

解决方法:在ggplot中集成filter筛选单个ID绘制散点图

嘿,这事儿不难!我帮你把filter函数完美集成到ggplot的代码里,还会给你完整的示例,一看就懂~

首先,咱们先把你的示例数据集补全成可运行的格式(方便你直接测试):

# 构造完整的示例数据集
sample_data <- data.frame(
  main_id = c("ST_10", "ST_11", "ST_10", "ST_10", "ST_11", "ST_11"),
  sub_id = c("A", "B", "A", "C", "B", "D"),
  measurement = c(2.3, 4.1, 2.5, 3.0, 3.9, 4.5),
  lower_bound = c(1.8, 3.5, 1.9, 2.5, 3.4, 4.0),
  upper_bound = c(2.8, 4.7, 2.9, 3.5, 4.4, 5.0),
  timestamp = as.POSIXct(c("2024-01-01 09:00", "2024-01-01 09:10", 
                           "2024-01-01 09:20", "2024-01-01 09:30", 
                           "2024-01-01 09:40", "2024-01-01 09:50"))
)

方法1:先筛选数据再绘图(清晰直观)

先加载tidyverse包(它包含了dplyr的filter和ggplot2),然后用filter筛选你需要的单个主ID,再传入ggplot绘图:

library(tidyverse)

# 筛选目标主ID,比如这里选ST_10
filtered_data <- sample_data %>%
  filter(main_id == "ST_10")

# 绘制散点图+上下界误差棒
ggplot(filtered_data, aes(x = timestamp, y = measurement, color = sub_id)) +
  # 绘制测量值的散点
  geom_point(size = 3) +
  # 绘制上下界的误差棒(如果想把上下界也画成散点,换成geom_point即可)
  geom_errorbar(aes(ymin = lower_bound, ymax = upper_bound), width = 0.1) +
  # 添加标题和坐标轴标签
  labs(
    title = "Measurement Values with Bounds for ST_10",
    x = "Time Stamp",
    y = "Value",
    color = "Sub ID"
  ) +
  # 用简洁的主题美化图表
  theme_minimal()

方法2:直接在ggplot数据源中集成filter(更简洁)

如果你不想单独保存筛选后的数据集,可以直接把filter嵌套到ggplot的数据源里,一步到位:

library(tidyverse)

ggplot(sample_data %>% filter(main_id == "ST_10"), aes(x = timestamp, y = measurement, color = sub_id)) +
  geom_point(size = 3) +
  geom_errorbar(aes(ymin = lower_bound, ymax = upper_bound), width = 0.1) +
  labs(
    title = "Measurement Values with Bounds for ST_10",
    x = "Time Stamp",
    y = "Value",
    color = "Sub ID"
  ) +
  theme_minimal()

关键说明

  • filter(main_id == "ST_10"):这部分是dplyr的筛选函数,只保留main_id等于你指定值的行,把"ST_10"换成你需要的任意ID即可。
  • color = sub_id:用颜色区分不同的sub ID,方便你一眼分辨每个子ID的测量值和上下界。
  • 如果不想用误差棒展示上下界,把geom_errorbar换成geom_point(aes(y = lower_bound), shape = 2)和geom_point(aes(y = upper_bound), shape = 2),就能用空心点标记上下界啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:27:02