我对 R 很陌生,所以如果我的问题不清楚,请多多包涵。
我有一个data.frame
包含 5 列的“蛋白质”,即;
1.protein_name、2.protein_FC、3.protein_pval、4.mRNA_FC、5.mRNA_pval 和 6.freq。
我正在尝试用 x=log2(protein_FC), y=-log10(protein_pval) 绘制火山图。然后将点的大小映射到 freq 并将颜色映射到 mRNA_FC。这一切都很好,这是我使用的代码:
ggplot( protein [ which ( protein$freq <= 0.05 ),] , aes( x = log2( protein_FC ) ,
y = -log10 ( protein_pval ) , size = freq , colour = mRNA_FC ,
label = paste(protein_name,",",mRNA_pval), alpha=1/1000)) +
geom_point() + geom_text( hjust = 0 , vjust = 0 , colour = "black" , size = 2.5 ) +
geom_abline( intercept = 1.3 , slope = 0) +
scale_colour_gradient(limits=c(-3,3))
到这里为止一切都很好。但是由于实验的性质,它周围的数据非常密集mRNA_FC = 0
。在那里,ggplot 应用的默认配色方案在区分不同点方面效果不佳。
low="colour1"
我通过使用和尝试了各种色阶high="colour2"
。但是我认为最好在 的范围内使用多个色标mRNA_FC
,即类似的东西。蓝色为白色-3<mRNA<-0.2
,红色为白色-0.2<mRNA_FC<0
,绿色为白色0<mRNA_FC<0.2
,黑色为白色0.2<mRNA_FC<3
。
但是我还没有找到任何方法来做到这一点。
任何帮助,将不胜感激。干杯!