2015-09-10 88 views
-3

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

这里是我的数据集的部分看起来像:

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为< 0,则该点为绿色。

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

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

+1

新列:根据同性恋者亲友指定什么以上。 然后将颜色映射到您的标志变量。 对于标签geom_text(),定义您的标签在美学('aes()')中,包括您所需的[条件标签] [1](P值<0.05)。 [1]:http://stackoverflow.com/a/15625149/4718512 – oshun

+0

列名称中的虚线在R中不起作用。如果您想在可能被称为“标准”的答案中发布文本文件并输入语句R”。 –

+0

你可以发布迄今为止尝试的'ggplot2'代码吗? – eipi10

回答

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) 
+0

增加了一个'ggplot'编辑...我认为事情很复杂,在这里很好地获得完整的设置。在那个版本中,我将不变的颜色和形状合并到'geom'中,以便不需要定义手动缩放。如果您希望我可以将其作为单独的答案发布,但与您的答案没有多大区别。 – Gregor

+0

感谢您分享您的改进! – PereG

+0

当我运行df $ new = ifelse函数时,出现以下错误:'$ < - 。data.frame'('* tmp *',“new”,value = logical(0)): 替换为0行,数据有6 – Crystal