2015-09-10 117 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