Usando várias escalas scale_colour_gradient para diferentes intervalos de dados em um gráfico

Eu sou muito novo em R, por favor, tenha paciência comigo se algo não estiver claro na minha pergunta.

eu tenho umdata.frame "proteína" com 5 colunas, a saber;

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

Eu estou tentando traçar um gráfico de vulcão com x = log2 (protein_FC), y = -log10 (protein_pval). Em seguida, mapeie o tamanho dos pontos para a frequência e cor para mRNA_FC. Isso tudo funciona bem e aqui está o código que eu usei:

<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>

tudo está bem até aqui. Mas por causa da natureza do experimento, os dados são bastante densosmRNA_FC = 0. Lá, o esquema de cores padrão que o ggplot aplica não funciona muito bem na distinção de pontos diferentes.

Eu tentei várias escalas de cores usandolow="colour1" ehigh="colour2". No entanto, acho que será melhor usar várias escalas de cores nos intervalos demRNA_FC, ou seja, algo parecido. azul para branco para-3<mRNA<-0.2vermelho a branco para-0.2<mRNA_FC<0verde para branco0<mRNA_FC<0.2 e preto para branco para0.2<mRNA_FC<3.

Mas ainda não encontrei nenhuma maneira de fazer isso.

Qualquer ajuda seria apreciada. Felicidades!

questionAnswers(1)

yourAnswerToTheQuestion