我编写了下面的代码来创建一个火山图,它是基于data.frame "gseaRes“的变量"group”着色的。有色点指的是我感兴趣的路径,而其他(不感兴趣的)路径应该是灰色的,在背景中。我使用geom_point中的参数"alpha“来使其更透明,但灰色点在灰色点内总是模糊不清,灰色点很难被看到,所以我们不知道它们是多少。我在徘徊,如果有人知道如何将这些点分为两层,一层对另一层,就像我们对顶部的散点图和线条所做的那样。有参数吗?还是用另一种方式编码?
下面是我使用的数据集:https://github.com/mariakondili/GSEA/blob/main/GSEA_dataframe.tsv
下面是我制作它的方法:
suppressPackageStartupMessages(library(tidyverse))
gseaRes %>%
mutate("group" = ifelse(str_detect(pathway,"blabla1"),"group1",
ifelse(str_detect(pathway,"blabla2"), "group2",
ifelse(str_detect(pathway,"blabla3"), "group3",
ifelse(str_detect(pathway,"blabla4"), "group4",
ifelse(str_detect(pathway,"blabla5"),"group5","Other"))))))
ggplot(gseaRes , aes(x=-log10(padj), y=NES, size=size, col=group)) +
geom_point(alpha=ifelse(gseaRes$group=="Other",0.02, 1)) +
scale_color_manual(values = c("group1" = "violetred",
"group2" = "royalblue1" ,
"group3"="orange",
"group4" = "cyan",
"group5" ="tomato4",
"Other" = "grey30")) + theme_classic()
发布于 2022-10-26 01:52:41
您可以使用两个传递筛选数据集的geom_point
,一个只包含“其他”类别,一个包含您感兴趣的路径:
library(tidyverse)
gseaRes <- read_tsv("https://raw.githubusercontent.com/mariakondili/GSEA/main/GSEA_dataframe.tsv")
gseaRes <- gseaRes %>%
mutate(group = ifelse(str_detect(pathway, "_ACTIN"), "group1",
ifelse(str_detect(pathway, "blabla"), "group2",
ifelse(str_detect(pathway, "blabla"), "group3",
ifelse(str_detect(pathway, "blabla"), "group4",
ifelse(str_detect(pathway, "blabla"), "group5", "Other")
)
)
)
))
ggplot(gseaRes, aes(x = -log10(padj), y = NES, size = size, col = group)) +
geom_point(data = filter(gseaRes, group == "Other"), alpha = .02) +
geom_point(data = filter(gseaRes, !group == "Other")) +
scale_color_manual(values = c(
"group1" = "violetred",
"group2" = "royalblue1",
"group3" = "orange",
"group4" = "cyan",
"group5" = "tomato4",
"Other" = "grey30"
)) +
theme_classic()
https://stackoverflow.com/questions/74205581
复制相似问题