Использование нескольких шкал scale_colour_gradient для разных диапазонов данных на одном графике

Я очень плохо знаком с R, поэтому, пожалуйста, потерпите меня, если что-то не понятно в моем вопросе.

у меня естьdata.frame & Quot; белок & Quot; с 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). Затем сопоставьте размер точек частоте и цвету mRNA_FC. Это все работает нормально, и вот код, который я использовал:

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

пока все хорошо Но из-за характера эксперимента, данные довольно плотны вокруг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.

Но я пока не нашел способа сделать это.

Любая помощь будет оценена. Ура!

Ответы на вопрос(1)

Ваш ответ на вопрос