我正在尝试突出显示特定于箱线图的基因(点)。换句话说,我首先在此处创建了两个箱形图: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
答案 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
失败。我认为这确实是有道理的,因为正是这种色彩美学成为了“传奇”。