具有指定颜色的Dotplot

时间:2015-09-10 21:44:25

标签: r ggplot2 plot

我想使用ggplot2制作一些点图,但是我需要为我的数据指定颜色并标记其中的一些。

以下是我的数据集的一部分:

FactorA   Gene   P-value      logFC
  a        A       0.01         2
  a        B       0.07         3
  b        A       0.05        -1
  b        B       0.03        -0.5

所以我想要的是

  • 如果我的P值> 0.05,然后点是灰色,
  • 如果P值< 0.05和logFC> 0,点是红色,
  • 如果P值< 0.05和logFC&lt; 0,点是绿色。

然后我也希望这些圆点看起来像黑色轮廓的圆圈并填充如上。然后我只想用 P值<0.05 标记基因。然后我想要我的dotplots facet_wrap由FactorA。

我应该如何在ggplot2中指定这些?

1 个答案:

答案 0 :(得分:1)

这对我有用

df$new <- ifelse(df$Pvalue > 0.05, "grey",
    ifelse(df$logFC > 0, "red", "green"))
library(ggplot2)
q <- qplot(Pvalue, logFC, data = df, shape=new, fill=new, colour=new)
q <- q + scale_shape_manual(values=c(21,21,21)) 
q <- q + scale_fill_manual(values=c("green", "grey", "red")) + scale_colour_manual(values=c("black", "black", "black")) 
q <- q + geom_text(aes(label=ifelse(Pvalue > 0.05 ,as.character(FactorA),'')),hjust=0,just=0)
q + facet_wrap( ~ FactorA, ncol=2)

感谢@oshun获取条件geom_text

或者,使用ggplot()代替qplot()

library(ggplot2)
g <- ggplot(df, aes(x = Pvalue, y = logFC, fill = new) +
         geom_point(color = "black", shape = 21) + 
         scale_fill_manual(values = c("green", "grey", "red")) + 
         geom_text(aes(label = ifelse(Pvalue > 0.05,
                                      as.character(FactorA), '')),
                   hjust = 0) +
         facet_wrap(~ FactorA, ncol = 2)