Использование нескольких шкал 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
.
Но я пока не нашел способа сделать это.
Любая помощь будет оценена. Ура!