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

如何用ggplot绘制连接同患者同测试不同条件配对值的彩色折线图

问题解决:ggplot连接配对数据点

问题描述

我希望使用以下数据集创建ggplot图表,目标是连接**同一患者、同一测试(essai)且不同条件(condition)**下的10MWT配对值,但现有代码无法实现:

数据集

patient    condition   essai   10MWT
1   sans    1   9,57
1   sans    2   9,52
1   sans    3   8,92
1   avec    1   9,73
1   avec    2   9,38
1   avec    3   9,3
2   sans    1   19,41
2   sans    2   17,04
2   sans    3   17,61
2   avec    1   15,79
2   avec    2   16,58
2   avec    3   16,83
3   sans    1   6,99
3   sans    2   8,07
3   sans    3   7,91
3   avec    1   7,54
3   avec    2   7,65
3   avec    3   8,42
4   sans    1   8,75
4   sans    2   8,29
4   sans    3   8,18
4   avec    1   7,96
4   avec    2   8,09
4   avec    3   8,34
5   sans    1   9,36
5   sans    2   8,91
5   sans    3   8,88
5   avec    1   8,24
5   avec    2   7,57
5   avec    3   7,56
6   sans    1   7,53
6   sans    2   8,15
6   sans    3   7,52
6   avec    1   7,39
6   avec    2   7,34
6   avec    3   6,85

现有代码

ggplot(data3, aes(factor(condition), value)) +
  geom_boxplot(width=0.3, size=1, fatten=1, colour="black") +
  geom_point( size=2, alpha=0.5, col= data3$patient) +
  geom_line(aes(x=factor(condition), y=value), colour= data3$patient)

解决方案

1. 数据预处理

首先注意到数据中10MWT列使用逗号作为小数点分隔符,需要先转换为数值型:

# 转换10MWT为数值
data3$`10MWT` <- as.numeric(gsub(",", ".", data3$`10MWT`))

2. 修正ggplot代码

问题核心是geom_line没有正确指定分组条件——需要按**患者(patient)+测试(essai)**的组合来分组,这样才能连接同一患者同一测试下的两个条件数据点。此外,代码中aes里的value应该替换为实际的列名10MWT,同时颜色映射应放入aes内,避免外部引用数据框导致的问题:

library(ggplot2)

ggplot(data3, aes(x = factor(condition), y = `10MWT`)) +
  # 箱线图
  geom_boxplot(width=0.3, size=1, fatten=1, colour="black") +
  # 散点:按患者区分颜色
  geom_point(aes(color = factor(patient)), size=2, alpha=0.5) +
  # 连线:按患者+测试的组合分组,确保只连接配对的点
  geom_line(aes(group = interaction(patient, essai), color = factor(patient)), alpha=0.7)

修改说明

  • group = interaction(patient, essai):指定每个患者的每个测试为一个独立分组,ggplot会自动连接同一分组内的两个条件数据点。
  • 将col = data3$patient改为aes(color = factor(patient)):符合ggplot的语法规范,避免数据匹配错误。
  • 替换value为10MWT:对应数据集中的实际测量值列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:12:42