You need to enable JavaScript to run this app. 使用R语言ggplot2绘制连接模型LCL与UCL的X1、X2分组图表
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言ggplot2绘制连接模型LCL与UCL的X1、X2分组图表

R语言实现方案(基于ggplot2)

步骤1:加载依赖包与导入数据集

# 加载需要的包
library(tidyverse)

# 导入你提供的数据集
mydata <- structure(list(x1m1 = c(0.5, 1), x1m2 = c(0.2, 1.5), x1m3 = c(0.5, 
1.25), x2m1 = c(0.24, 0.98), x2m2 = c(0.1, 1.4), x2m3 = c(1, 
2)), class = "data.frame", row.names = c("LCL", "UCL"))

步骤2:数据格式转换(宽表转长表,适配绘图需求)

原有数据集为宽格式,需先转换为适配ggplot2绘图的长格式,同时拆分出指标分组(X1/X2)和模型编号:

df_long <- mydata %>%
  rownames_to_column("limit_type") %>%
  pivot_longer(cols = -limit_type, names_to = "group_model", values_to = "value") %>%
  # 拆分列名提取X分组和模型编号
  separate(group_model, into = c("x_group", "model"), sep = 2) %>%
  # 转为因子固定展示顺序
  mutate(x_group = factor(x_group, levels = c("x1", "x2"), labels = c("X1", "X2")),
         model = factor(model, levels = c("m1", "m2", "m3"), labels = c("模型1", "模型2", "模型3")))

步骤3:绘制目标图表

可以选择分面同时输出X1、X2的图表,也可以单独筛选分组输出单个图表:

# 分面同时输出X1、X2的结果
ggplot(df_long, aes(x = model, y = value)) +
  # 连接每个模型的LCL和UCL竖线
  geom_line(aes(group = model), linewidth = 1) +
  # 标记LCL和UCL的端点
  geom_point(aes(color = limit_type), size = 3) +
  # 按X1/X2分面展示
  facet_wrap(~x_group, scales = "free_y") +
  # 调整坐标轴和图例说明
  labs(x = "模型", y = "数值", color = "限值类型") +
  theme_bw()

如果需要单独输出X1或者X2的图表,只需要在绘图前增加筛选条件即可,比如仅绘制X1的图表:

df_long %>%
  filter(x_group == "X1") %>%
  ggplot(aes(x = model, y = value)) +
  geom_line(aes(group = model), linewidth = 1) +
  geom_point(aes(color = limit_type), size = 3) +
  labs(x = "模型", y = "数值", color = "限值类型") +
  theme_bw()

调整说明

如果需要修改配色、线条粗细、点大小等样式,直接调整geom_line和geom_point的对应参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 10:54:03