簡體   English   中英

如何在ggplot中根據x和y值范圍對點進行聚類

[英]How to cluster points based on both x and y value ranges in ggplot

我有不同樣本的 RNA 表達值的數據集。 我對它們應用了線性擬合和貝葉斯統計,然后針對“P.Value”繪制對數折疊變化(“LogFC”)以獲得以下 ggplot。 現在我想為“LogFC”< -2 或 > 2 的值和“P.Value”<0.05 的值着色,它們的顏色都與其余值不同。 我怎樣才能做到這一點?

ggplot 火山圖的 logFc 和表達基因的 P 值

雖然您確實可以將數據的子集繪制為圖層,但您也可以將顏色美學設置為嵌套的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 包(v0.3.0) 於 2020 年 9 月 17 日創建

似乎您對整個數據集使用了geom_point -plot。 解決您的問題的一種方法是添加帶有子集的附加點層。

您還沒有提供示例數據集,所以我使用了 iris 數據集。 我通過對數據集進行子集化並以藍色添加點來重新着色更小和更高的 Sepal.Length 值。 此外,Sepal.Width 中的小值使顏色變為綠色。

將此代碼傳輸到您的案例。 過濾數據集以獲得所需的LogFC和/或P.Value ,並將這些數據集和顏色參數添加到其他geom_point圖層。

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")

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM