【问题标题】:How to turn a table into a ggplot graph?如何将表格变成ggplot图?
【发布时间】:2020-12-09 15:28:12
【问题描述】:

我目前正在重写某人前段时间写的一篇文章,但无法跟上。本文有一个名为“表 2:基线、干预后和随访 6 个月和 12 个月时抑郁症状严重程度和血清白细胞介素 6 和肿瘤坏死因子水平的中位数和四分位数范围”的表格。

This is the table I'm talking about.

数据框目前是具有每个主题值的变量。像 il6_baseline、il6_6mon、il6_12mon、il6_after(用于白细胞介素 6)。与肿瘤坏死因子相同。这些是连续变量。

而表中的“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 和总样本),并有一些方框显示这些时间戳之间的血清水平。

我不确定在“盒状”图表或“点/点状”图表中显示我想要实现的目标是否会更好。我希望这些图表能够显示不同时期(初始/基线、6 个月、12 个月和治疗后)之间血清水平的变化。

【问题讨论】:

  • 请分享您数据框中的样本 - dput() 是分享数据的最佳方式,因为它是可复制/可粘贴的,并且包含类和结构信息,例如,前 10 行的 dput(your_data[1:10, ]) . (选择一个合适的子集来说明问题。)
  • 至于“我使用什么样的图表” - 请更清楚您的可视化目标。你想比较什么?你想让读者看到什么?例如,您可以为每个治疗组做小倍数,将估计值绘制为带有误差线的点,x 轴为时间。这忽略了 p 值,并强调了治疗内的比较。如果您想强调趋势,我们可以将估计值与线连接起来。也许使用阴影区域作为置信区间......
  • 有数百种方法可以可视化这些信息,哪一种最好取决于您的目标 - 我们不能只告诉您什么是最好的。除非您可以更具体地了解所需的可视化,否则问题可能会因“需要更多细节”或“基于意见”而关闭。
  • 太好了 - 请编辑您的问题以包含图表的规范,而不是将其放在 cmets 中。我们可以为您提供语法方面的帮助,这也应该为您提供一个很好的起点来试验图表的变体。

标签: r ggplot2 data-visualization median


【解决方案1】:

有效使用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

【讨论】:

  • 谢谢格雷戈尔!您的解释对提高我对 ggplot2 的了解非常有帮助。使用 ggplot 时,我慢慢习惯了一些模式。我知道通常我们有时必须将一些变量名称转换为新变量才能获得我们想要的标签等。我终于可以做我想做的了!祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2020-09-20
相关资源
最近更新 更多