如何使用ggplot绘制R中四个变量的趋势图?

如何使用ggplot绘制R中四个变量的趋势图?,r,ggplot2,R,Ggplot2,我有一个数据集记录了四个不同时间点的肿瘤大小(每行一名患者)。我想对这个数据集进行分析,以显示所有患者的肿瘤大小在每个时间点后都在减小 我能做什么样的分析?我应该如何使用ggplot可视化这些数据并显示趋势?非常感谢 SUBJECTID Baseline 1 2 3 1001 88 78 30 14 1002 29 26 66 16 1003 50 64 54 46 1

我有一个数据集记录了四个不同时间点的肿瘤大小(每行一名患者)。我想对这个数据集进行分析,以显示所有患者的肿瘤大小在每个时间点后都在减小

我能做什么样的分析?我应该如何使用ggplot可视化这些数据并显示趋势?非常感谢

SUBJECTID   Baseline    1   2   3

1001        88          78  30  14
1002        29          26  66  16
1003        50          64  54  46
1004        91          90  99  43
1005        98          109 60  42
1007        100         100     54
1008        45          49  47  32
1009        75          66  57  7
1010        60          52  20  3
1011        68          68  56  47
1012        78          84  56  57
1013        71          70  8   5
1015        79          50  11  3
1016        73          60  57  36
1017        54          27  16
1018        50          37  33  26
1019        115         68  33  67
1021        63          55  0   0
1022        98          91  76  75
1024        76          76      0
1025        47          45  42  42
1026        32          25  14  0
1027        40          37  65  
1028        60          110 110 0

为了显示在每个时间点之后肿瘤的总体大小都在减小,您通常需要在每个时间帧之后获得肿瘤的平均大小。它比每一个单独的元素都容易绘制。我已经写了如何使用前四行生成点图:

baseline <- c(88, 29, 50, 91)
dAC <- c(78, 26, 64, 90)
InterReg <- c(30, 66, 54, 99)
PreSurg <- c(14, 16, 46, 43)
matrix <- rbind(baseline, dAC, InterReg, PreSurg)
means <- rowMeans(matrix)
plot(means)
baselineA可能有效。请尝试以下操作:

library(tidyverse)

df %>% 
  gather(key = "time", value = "tumor_size", -SUBJECTID) %>% 
  ggplot(aes(time, tumor_size)) +
  geom_boxplot() +
  labs(title = "Tumor Size ~ Time",
       subtitle = "Insert subtitle if you want",
       caption = "Insert caption if you want",
       x = "Time",
       y = "Tumor Size (insert unit)") +
  theme_bw() +
  theme(
    panel.grid.major.x = element_blank(),
    text = element_text(family = "Palatino"),
    plot.title = element_text(face = "bold", size = 20)
  )

如果愿意,还可以添加
geom_jitter()
。在
geom_boxplot()+
行之后,添加:

geom_jitter(width = 0.1, pch = 21, fill = "grey") +
你会得到这样的结果:


考虑合并数据,生成包含患者ID和日期的列,然后可以使用x轴上的日期、y轴上的肿瘤大小以及按肿瘤类型划分的小关节面。你会看到很多条线,但你会知道总的趋势。另外,dput()是您问题中的数据集,因此我们可以提供数据代码,图片很难处理数据已被更新。为什么在我运行ggplot(aes(键,值))行之后,df被更改为列表,然后geom_boxplot()不再工作?嗯,
ggplot2
行不应该制作列表。第二行
gather(key,value,-SUBJECTID)
用于将所有时间变量合并到一个名为
key
的变量中。这样,我们就有了一个数据集,其中每一列都是一个变量(即
subject
key
、和
value
),其中
key
是时间,
value
是肿瘤大小。我可能应该重新命名这些,以使其更清楚。