Usando múltiples escalas scale_colour_gradient para diferentes rangos de los datos en una gráfica

Soy muy nuevo en R, así que tenga paciencia si algo no está claro en mi pregunta.

tengo undata.frame "proteína" con 5 columnas, a saber;

1.protein_name, 2.protein_FC, 3.protein_pval, 4.mRNA_FC, 5.mRNA_pval y 6.freq.

Estoy intentando trazar un gráfico de volcán con x = log2 (protein_FC), y = -log10 (protein_pval). Luego, asigne el tamaño de los puntos a la frecuencia y el color a mRNA_FC. Todo esto funciona bien y aquí está el código que he usado:

<code>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))
</code>

todo está bien hasta aquí. Pero debido a la naturaleza del experimento, los datos son bastante densos en torno amRNA_FC = 0. Allí, el esquema de color predeterminado que aplica ggplot no funciona muy bien al distinguir diferentes puntos.

He intentado varias escalas de color utilizandolow="colour1" yhigh="colour2". Sin embargo, creo que será mejor usar múltiples escalas de color en los rangos demRNA_FC, es decir, algo así. azul a blanco para-3<mRNA<-0.2, rojo a blanco para-0.2<mRNA_FC<0, verde a blanco para0<mRNA_FC<0.2 y negro a blanco para0.2<mRNA_FC<3.

Pero no he encontrado ninguna manera de hacerlo todavía.

Cualquier ayuda sería apreciada. ¡Aclamaciones!

Respuestas a la pregunta(1)

Su respuesta a la pregunta