Verwenden mehrerer scale_colour_gradient-Skalen für verschiedene Datenbereiche in einem Diagramm

Ich bin sehr neu in R, bitte nehmen Sie Kontakt mit mir auf, wenn etwas in meiner Frage nicht klar ist.

Ich habe eindata.frame "Protein" mit 5 Säulen, nämlich;

1.Protein_Name, 2.Protein_FC, 3.Protein_Pval, 4.MRNA_FC, 5.MRNA_Pval und 6.Freq.

Ich versuche einen Vulkanplot mit x = log2 (protein_FC), y = -log10 (protein_pval) zu zeichnen. Ordnen Sie dann die Größe der Punkte der Frequenz und der Farbe der mRNA_FC zu. Das alles funktioniert gut und hier ist der Code, den ich verwendet habe:

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

Bis hier ist alles in Ordnung. Aufgrund der Art des Experiments sind die Daten jedoch ziemlich dichtmRNA_FC = 0. Dort funktioniert das Standardfarbschema, das ggplot anwendet, bei der Unterscheidung verschiedener Punkte nicht sehr gut.

Ich habe verschiedene Farbskalen mit ausprobiertlow="colour1" undhigh="colour2". Ich denke jedoch, dass es am besten ist, mehrere Farbskalen über die Bereiche von zu verwendenmRNA_FCd.h. blau bis weiß für-3<mRNA<-0.2, rot bis weiß für-0.2<mRNA_FC<0, grün bis weiß für0<mRNA_FC<0.2 und schwarz zu weiß für0.2<mRNA_FC<3.

Aber ich habe noch keinen Weg gefunden, es zu tun.

Jede Hilfe wäre dankbar. Prost!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage