【问题标题】:Plotting multiseries data with restricted range in R?在R中绘制范围受限的多系列数据?
【发布时间】:2020-10-25 03:52:30
【问题描述】:

作为参考,这是我的数据的样子:

   ID              ABCA2       ABCA3      ABCA5
1  A1         0.04146778 -0.10448552  0.1917801
2  A2         0.10223063  0.03305589  0.1465377
3  A3        -0.12581648  0.09651400 -0.1105879

我有点迷茫,因为我试图获得一个 y 轴有界 [0,1] 范围的分类散点图(类别是 A1 等 ID)。基本上看起来像这样的东西。如何使用 ggplot2 等 R 函数执行此操作?我有 769 个类别,每个类别有 18000 个数据点

【问题讨论】:

    标签: r ggplot2 data-visualization categorical-data


    【解决方案1】:

    我假设您要绘制所有点,无论它们是否属于ABCA2ABCA3ABCA5 等。

    假设您的数据框名为df,除了IDABCA_ 形式的变量之外没有其他变量。然后,您可以将所有这些 ABCA_ 子组收集到一列中:

    tidyr::gather(df, key = "ABCA_group", value = "value", -ID)
    
    #   ID   ABCA_group       value
    # 1 A1        ABCA2  0.04146778
    # 2 A2        ABCA2  0.10223063
    # 3 A3        ABCA2 -0.12581648
    # 4 A1        ABCA3 -0.10448552
    # 5 A2        ABCA3  0.03305589
    # 6 A3        ABCA3  0.09651400
    # 7 A1        ABCA5  0.19178010
    # 8 A2        ABCA5  0.14653770
    # 9 A3        ABCA5 -0.11058790
    

    现在我们可以通过管道将其输入ggplot 以获得分类散点图(带有一点水平抖动),并将 y 轴限制为 [0, 1](这将删除像 -0.12581648 这样的值)。确保事先library(dplyr) 获取管道操作员%>%

    tidyr::gather(df, key = "ABCA_group", value = "value", -ID) %>%
      ggplot(aes(x = ID, y = value)) +
        geom_jitter(color = "red", width = 0.05) +
        ylim(c(0, 1))
    
    # Warning message:
    # Removed 3 rows containing missing values (geom_point).
    

    我假设您不会同时在 x 轴上绘制所有 769 个类别,因此您可以通过在 tidyr::gatherggplot 之间添加额外的过滤步骤来仅选择其中的一个子集:

    tidyr::gather(...) %>%
       dplyr::filter(ID %in% c("A1", "A2")) %>%
       ggplot(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多