r - R:箱线图:在重复测量的情况下在每个主题之间画线
问题描述
我有数据,其中我在 4 个不同阶段对相同主题进行了测量。我的目标是制作一个图表,其中既有箱线图,也有每个主题的点,并用一条线连接每个阶段之间的每个主题。最终结果是将下面的两个图表组合成一个最终图表
library(ggplot2)
df_original = data.frame(study_id = c("id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"),
val_stage1 = runif(10, 5.0, 6.0),
val_stage2 = runif(10, 5.0, 6.5),
val_stage3 = runif(10, 4.7, 5.8),
val_stage4 = runif(10, 5.5, 7.0))
df_original
df_plot1 = data.frame(group = "stage1", value = df_original[, "val_stage1"], ID = df_original$study_id)
df_plot2 = data.frame(group = "stage2", value = df_original[, "val_stage2"], ID = df_original$study_id)
df_plot3 = data.frame(group = "stage3", value = df_original[, "val_stage3"], ID = df_original$study_id)
df_plot4 = data.frame(group = "stage4", value = df_original[, "val_stage4"], ID = df_original$study_id)
plot_data = rbind(df_plot1,
df_plot2,
df_plot3,
df_plot4)
ggplot(plot_data, aes(x=group,
y=value,
fill=group
)
) +
geom_boxplot(outlier.shape = NA) +
geom_point()
library(lattice)
# source https://publicifsv.sund.ku.dk/~jufo/courses/rm2017/plotRrepeated.pdf
xyplot(value ~ group, group = ID, data = plot_data, type = "b")
解决方案
tidyverse 方法如下所示:
mylabs <- levels(plot_data$group)
library(tidyverse)
plot_data %>%
ggplot(aes(x = as.numeric(group), y = value)) +
geom_boxplot(aes(group = group, fill = group), outlier.shape = NA) +
geom_point(aes(color = ID)) +
geom_line(aes(color = ID)) +
theme(legend.position = "none") +
labs(x = "Group") +
scale_x_continuous(breaks = 1:4, labels = mylabs)
推荐阅读
- html - 围绕中心 CSS 动画运行的两个 div
- javascript - 预加载 chrome 扩展以减少扩展加载时间
- mysql - 加入和有子句后的分组结果
- javascript - Microsoft Edge:SCRIPT0:SCRIPT0:未定义“FormData”
- probability - 如何在概率中找到随机变量√X的期望
- python - 如何防止聚合函数删除列?
- arrays - 如何在 Swift 中将 plist 文件转换为数组
- tensorflow - LSTM 的精度非常低
- python - Python 装饰器正确计时递归函数
- syntax-error - fc 内置的手册页使用 - 而不是 - 作为选项