【问题标题】:How to cluster points based on both x and y value ranges in ggplot如何根据ggplot中的x和y值范围对点进行聚类
【发布时间】:2020-09-17 20:53:04
【问题描述】:

我有不同样本的 RNA 表达值数据集。我对它们应用了线性拟合和贝叶斯统计,然后针对“P.Value”绘制对数倍数变化(“LogFC”)以获得以下 ggplot。现在我想为“LogFC” 2 的值和“P.Value”

【问题讨论】:

    标签: r ggplot2 cluster-computing


    【解决方案1】:

    虽然您确实可以将数据子集绘制为图层,但您也可以将颜色美学设置为嵌套的 ifelse() 语句。你也会得到正确的传说。示例如下:

    library(ggplot2)
    set.seed(0)
    
    df <- data.frame(
      logFC = rt(10000, 10),
      pvalue = runif(10000)
    )
    
    ggplot(df, aes(logFC, log10(pvalue))) +
      geom_point(
        aes(colour = ifelse(is.na(pvalue) | pvalue > 0.05 | abs(logFC) < 2, "n.s.",
                            ifelse(logFC >= 2, "Up", "Down")))
      ) +
      scale_colour_manual(values = c("limegreen", "grey50", "dodgerblue"),
                          name = "Category") +
      scale_y_continuous(trans = "reverse")
    

    reprex package (v0.3.0) 于 2020-09-17 创建

    【讨论】:

      【解决方案2】:

      您似乎为整个数据集使用了geom_point-plot。 解决您的问题的一种方法是添加带有子集的额外点层。

      您还没有提供示例数据集,所以我使用了 iris 数据集。 我通过对数据集进行子集化并添加蓝色点来重新着色 Sepal.Length 的较小和较高值。 Sepal.Width 中的其他小值变为绿色。

      将此代码转移到您的案例中。过滤您的数据集以获得所需的LogFC 和/或P.Value,并将这些数据集和颜色参数添加到其他geom_pointlayers。

      ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
        geom_point(color = "red") +
        geom_point(data = iris[iris$Sepal.Length < 5 | iris$Sepal.Length > 7, ], color = "blue") +
        geom_point(data = iris[iris$Sepal.Width < 3, ], color = "green")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 2017-08-14
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 2022-10-04
        相关资源
        最近更新 更多