如何将 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