如何使用ggplot绘制R中四个变量的趋势图?
我有一个数据集记录了四个不同时间点的肿瘤大小(每行一名患者)。我想对这个数据集进行分析,以显示所有患者的肿瘤大小在每个时间点后都在减小 我能做什么样的分析?我应该如何使用ggplot可视化这些数据并显示趋势?非常感谢如何使用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
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
是肿瘤大小。我可能应该重新命名这些,以使其更清楚。