如何将 table 变成 ggplot 图?
How to turn a table into a ggplot graph?
我目前正在重写某人前段时间写的一篇文章,但无法跟进。这篇文章有一个 table 名为“Table 2:抑郁症状严重程度的中位数和四分位数范围以及基线、干预后以及干预后 6 个月和 12 个月血清白细胞介素 6 和肿瘤坏死因子水平跟进。”。
This is the table I'm talking about.
数据框当前是具有每个主题值的变量。像 il6_baseline、il6_6mon、il6_12mon、il6_after(对于白细胞介素 6)。肿瘤坏死因子也是如此。这些是连续变量。
而table中的“TCC”和“PDSE”是两个不同的群体,在那个时期有不同的治疗方法。
但我知道如何计算中位数等等。我的问题是我使用什么样的图表来最好地直观地说明这些信息?如果你能帮助我了解我可以从那里开始工作的基本语法。我是R的新手,一般都能搞定,但我从来不乱画图,现在就遇到了这个障碍。
感谢您的理解和关注。祝你有美好的一天!
用于可视化的子集 dput 的输出:
structure(list(a02rec = c(2925, 2461, 2887, 4132, 2734, 4176,
2158, 690, 4287, 2871), ND_IL_6I = c(156.475, 25.393, 5.20696,
29.448, 636.561, 16.7, 20.83028, 13.04912, 17.28, 30.686), ND_IL6_intermed = c(NA,
NA, NA, NA, NA, 4.5048, 49.654, 5.1872, 23.8992, NA), IL_6_6mesesultimovalorITT = c(62.163,
59.278, 45.1272, 19.258, 17.689, 15.864, 16.0992, 22.88964, 14.748,
21.706), modeloterapia = structure(c(2L, 1L, 1L, 2L, 1L, 1L,
2L, 2L, 1L, 2L), .Label = c("pdse", "tcc"), class = "factor")), row.names = c(NA,
10L), class = "data.frame")
在上面的这个子集中,“a02rec”变量无关紧要,它只是一个标识符。以“IL_6”和“ND_IL_6”开头的变量是来自收集的血清水平的变量,“modeloterapia”变量是关于受试者是否参加了 PSDE 或 TCC 治疗模型。正如我在之前的评论中所说,我想创建一个图表。三张图,每组一张(PSDE、TCC 和总样本),并有某种方框显示这些时间戳之间的血清水平。
我不确定用“框状”图表还是“point/dot-like”图表更好地显示我想要实现的目标。我想要这些图表来展示不同时期(initial/baseline、6 个月、12 个月和治疗后)血清水平的变化。
有效使用 ggplot2
的关键是将您的数据转换为长格式。
long_data = df %>%
pivot_longer(matches("IL")) %>%
separate(name, sep = "_", into = c("drug", "something", "time"))
head(long_data)
# # A tibble: 6 x 6
# a02rec modeloterapia drug something time value
# <dbl> <fct> <chr> <chr> <chr> <dbl>
# 1 2925 tcc ND IL 6I 156.
# 2 2925 tcc ND IL6 intermed NA
# 3 2925 tcc IL 6 6mesesultimovalorITT 62.2
# 4 2461 pdse ND IL 6I 25.4
# 5 2461 pdse ND IL6 intermed NA
# 6 2461 pdse IL 6 6mesesultimovalorITT 59.3
我对你的数据的某些含义一头雾水,但已经做出了一些猜测,希望你能纠正。
使用这种格式的数据,绘图相对简单。这是一个示例(由于数据样本太少,看起来有点奇怪)。
ggplot(long_data, aes(x = time, y = value, fill = drug)) +
geom_boxplot() +
facet_wrap(vars(modeloterapia), ncol = 1)
如果您需要对 x 轴重新排序,请将 x 轴上的变量转换为 factor
,级别按您想要的顺序排列,as in this answer。
我目前正在重写某人前段时间写的一篇文章,但无法跟进。这篇文章有一个 table 名为“Table 2:抑郁症状严重程度的中位数和四分位数范围以及基线、干预后以及干预后 6 个月和 12 个月血清白细胞介素 6 和肿瘤坏死因子水平跟进。”。
This is the table I'm talking about.
数据框当前是具有每个主题值的变量。像 il6_baseline、il6_6mon、il6_12mon、il6_after(对于白细胞介素 6)。肿瘤坏死因子也是如此。这些是连续变量。
而table中的“TCC”和“PDSE”是两个不同的群体,在那个时期有不同的治疗方法。
但我知道如何计算中位数等等。我的问题是我使用什么样的图表来最好地直观地说明这些信息?如果你能帮助我了解我可以从那里开始工作的基本语法。我是R的新手,一般都能搞定,但我从来不乱画图,现在就遇到了这个障碍。
感谢您的理解和关注。祝你有美好的一天!
用于可视化的子集 dput 的输出:
structure(list(a02rec = c(2925, 2461, 2887, 4132, 2734, 4176,
2158, 690, 4287, 2871), ND_IL_6I = c(156.475, 25.393, 5.20696,
29.448, 636.561, 16.7, 20.83028, 13.04912, 17.28, 30.686), ND_IL6_intermed = c(NA,
NA, NA, NA, NA, 4.5048, 49.654, 5.1872, 23.8992, NA), IL_6_6mesesultimovalorITT = c(62.163,
59.278, 45.1272, 19.258, 17.689, 15.864, 16.0992, 22.88964, 14.748,
21.706), modeloterapia = structure(c(2L, 1L, 1L, 2L, 1L, 1L,
2L, 2L, 1L, 2L), .Label = c("pdse", "tcc"), class = "factor")), row.names = c(NA,
10L), class = "data.frame")
在上面的这个子集中,“a02rec”变量无关紧要,它只是一个标识符。以“IL_6”和“ND_IL_6”开头的变量是来自收集的血清水平的变量,“modeloterapia”变量是关于受试者是否参加了 PSDE 或 TCC 治疗模型。正如我在之前的评论中所说,我想创建一个图表。三张图,每组一张(PSDE、TCC 和总样本),并有某种方框显示这些时间戳之间的血清水平。
我不确定用“框状”图表还是“point/dot-like”图表更好地显示我想要实现的目标。我想要这些图表来展示不同时期(initial/baseline、6 个月、12 个月和治疗后)血清水平的变化。
有效使用 ggplot2
的关键是将您的数据转换为长格式。
long_data = df %>%
pivot_longer(matches("IL")) %>%
separate(name, sep = "_", into = c("drug", "something", "time"))
head(long_data)
# # A tibble: 6 x 6
# a02rec modeloterapia drug something time value
# <dbl> <fct> <chr> <chr> <chr> <dbl>
# 1 2925 tcc ND IL 6I 156.
# 2 2925 tcc ND IL6 intermed NA
# 3 2925 tcc IL 6 6mesesultimovalorITT 62.2
# 4 2461 pdse ND IL 6I 25.4
# 5 2461 pdse ND IL6 intermed NA
# 6 2461 pdse IL 6 6mesesultimovalorITT 59.3
我对你的数据的某些含义一头雾水,但已经做出了一些猜测,希望你能纠正。
使用这种格式的数据,绘图相对简单。这是一个示例(由于数据样本太少,看起来有点奇怪)。
ggplot(long_data, aes(x = time, y = value, fill = drug)) +
geom_boxplot() +
facet_wrap(vars(modeloterapia), ncol = 1)
如果您需要对 x 轴重新排序,请将 x 轴上的变量转换为 factor
,级别按您想要的顺序排列,as in this answer。