【问题标题】:Plot Measurements Over Time [ggplot2]随着时间的推移绘制测量值 [ggplot2]
【发布时间】:2019-03-01 10:38:33
【问题描述】:

我有一个如下所示的数据框:

   A1    A2    A3    A4    A5
   2     2     2     2     2
   3     3     3     3     4
   3     3     3     3     4
   1     1     2     2     1
   3     2     2     3     2
   4     4     4     3     4

我想使用r 中的ggplot2 在单个图表上绘制多条线,显示从 A1 到 A5(同一变量随时间推移的 5 次测量值)的趋势,其中y-axis 作为分类变量,其值为 1 - 5。我经历了很多建议使用来自reshape2melt 或来自tidyrgather 的答案,但它们并不能完全产生我想要的。非常感谢任何帮助。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我不太清楚如何你想可视化你的数据,但也许是这样的?

    library(tidyverse)
    df %>%
        rowid_to_column("patient") %>%
        mutate(patient = factor(patient)) %>%
        gather(key, val, -patient) %>%
        ggplot(aes(x = key, y = val, colour = patient, group = patient)) +
        geom_line()
    

    df %>%
        rowid_to_column("patient") %>%
        mutate(patient = factor(patient)) %>%
        gather(key, val, -patient) %>%
        ggplot(aes(x = key, y = val, colour = patient, group = patient)) +
        geom_line() +
        facet_wrap(~ patient)
    


    样本数据

    df <- read.table(text =
        "  A1    A2    A3    A4    A5
       2     2     2     2     2
       3     3     3     3     4
       3     3     3     3     4
       1     1     2     2     1
       3     2     2     3     2
       4     4     4     3     4", header = T)
    

    要删除 x 轴,您可以这样做

    df %>%
        rowid_to_column("patient") %>%
        mutate(patient = factor(patient)) %>%
        gather(key, val, -patient) %>%
        ggplot(aes(x = key, y = val, colour = patient, group = patient)) +
        geom_line() +
        facet_wrap(~ patient) +
        theme(
            axis.title.x = element_blank(),
            axis.text.x = element_blank(),
            axis.ticks.x = element_blank())
    

    请注意,移除 x 轴可能不太明智。

    【讨论】:

    • 哇。非常感谢!第一张图正是我要找的!第二个看起来更好更清晰,但我不能真正使用它,因为我有 30 个患者的样本!基本上,这个想法是比较这些患者的测量趋势,看看是否有任何一般模式。有什么想法吗?
    • @ayePete 很难为 30 位不同的患者对曲线进行着色。也许您还有其他一些可以将患者分组为子组的辨别特征?如果是这样,您可以将患者分组,然后可视化不同子组中不同患者的趋势。或者,层次聚类可以深入了解不同患者之间的相似性,然后您可以使用它来将患者分组到子组中。
    • 谢谢!您认为可以按体重、BMI 或性别对它们进行聚类吗?如果是这样,我该怎么做?请原谅我的无知!
    • @ayePete (1) 存在不同的聚类方法,例如层次聚类、k 均值等。哪个最合适取决于您的数据和我没有的特定领域知识。查看 SO 和网络上的一些帖子,了解如何实现这些方法。 (2) 30 面板刻面图基本上没有错;-) 提供的数据以合理的方式显示。查看一些 ggplot 教程或谷歌“删除 x 轴 ggplot”,以获得有关如何调整 (gg) 图的一些建议。
    • @ayePete PS。我更新了我的帖子以展示如何删除 x 轴。
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多