高亮显示箱图中的点

时间:2018-10-17 21:42:51

标签: r

我正在尝试突出显示特定于箱线图的基因(点)。换句话说,我首先在此处创建了两个箱形图:Highlight specific genes in boxplot。然后,我尝试用黑色突出显示最多0的点,用灰色突出显示小于0的点。关键是,由于生物学效应,一个箱形图中大于0的点在另一个箱形图中将小于0。如果我对两个箱形图仅使用一个标准,则即使在另一个箱形图中该值小于0,大于0的点仍将保持黑色,因此它们应变为灰色。 我该如何解决这个问题?

这是我正在使用的代码:

 df
        Gene        Treated       Untreated   
         A           0.12           0.12  
         B           12.4           0.003   
         C           3.4            0.32   
         D           8.9            0.1   
         E           1.28           0.32   
         F          -4.95           1.54   
         G          -5.93           0.87  
         H           11.2           0.76   
         I           9.8            1.06 


    library(ggplot2)
    library(dplyr)
    library(tidyr)
    gene_list <- c('C', 'F', 'G', 'I')
    df_long <- gather(df, treatment, expression, -Gene)
    ggplot(df_long, aes(treatment, expression)) +
    geom_boxplot() +
    geom_point(aes(color = Gene), filter(df_long, Gene %in% gene_list),    size = 3) + 
    theme_minimal() +
    labs(caption = 'p < 0.001')

(在此感谢Axeman:Highlight specific genes in boxplot

提前谢谢

[![在此处输入图片描述] [1]] [1]

我对代码的编辑:

  jitter <- position_jitter(width = 0.18, height = 0.1)
    p = ggplot(df, aes(treatment, expression)) +
    geom_boxplot(notch = TRUE, width=0.4) +
    geom_point(aes(color = Gene), filter(df, Gene %in% gene_list1), size = 2, color = "black", position = jitter) + geom_point(aes(color = Gene), filter(df, Gene %in% gene_list2), size = 2, color = "grey", position = jitter) 

“ gene_list1”包含表达式> 0
的基因 “ gene_list2”包含表达式为<0

的Genes

1 个答案:

答案 0 :(得分:1)

将颜色的值更改为逻辑测试将使您达到目标。将此用于geom_point调用

geom_point(aes(color = (expression > 0) )

这样可以正确显示标签,但图例标题看起来很奇怪:

geom_point(aes(color = c("LT 0", "GT 0")[1+(expression > 0)] )

要修复图例标题,请添加以下内容:

... +  guides(color = guide_legend(title= "Above or Below zero"))+ ...

我发现将颜色更改为文本值相当奇怪,但是将参数更改为fill失败。我认为这确实是有道理的,因为正是这种色彩美学成为了“传奇”。

enter image description here