2013-08-28 8 views
6

Ich habe einen Datenrahmen wie dieseggplot Satz scale_color_gradientn manuell

BP  R2  LOG10 
96162057 0.2118000 2.66514431 
96162096 0.0124700 0.31749391 
96162281 0.0008941 0.07012148 
96163560 0.5011000 2.48505399 
96163638 0.8702000 3.37778598 

und ich will BP plotten gegen LOG10 und färben die Punkte von R2. R2 sind kontinuierliche Werte von 0-1.

myplot <- read.cvs("mytable.csv",head=TRUE) 
attach(myplot) 
ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() 

So weit, so gut. Allerdings würde ich gerne die R2-Farben in manuell ausgewählten Intervallen und Farben anzeigen, wenn ich diskrete Werte hätte.

Das sieht hübsch aus, aber ich würde lieber die Farben selbst setzen.

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point(shape=1) + 
       scale_colour_gradientn(colours = rainbow(10)) 

Also, wie kann ich Intervalle manuell von kontinuierlichen Werten wählen (1-0,8, 0,8 bis 0,6, 0,6 bis 0,4, 0,4-0,2, 0.2-0) und färben sie nach meinem Geschmack (rot, gelb , grün, hell, dunkelblau)? Ein sanfter Farbverlauf zwischen den Farben wäre cool, aber nicht entscheidend.

Antwort

7

Sie können scale_colour_gradientn() verwenden und dann Ihre eigenen colours= und values= bereitstellen. Die Werte geben Intervalle für jede Farbe an.

ggplot(myplot,aes(BP,LOG10, color=R2)) + geom_point() + 
    scale_colour_gradientn(colours = c("red","yellow","green","lightblue","darkblue"), 
         values=c(1.0,0.8,0.6,0.4,0.2,0)) 

enter image description here

+0

Vielen Dank Didzis, dass löst es total! Haben Sie auch eine Lösung ohne Gradienten, also eher alle Werte von 1-0,8 = rot, 0,8-0,6 = gelb, und so weiter? – user2724998

+0

Dann sollten Sie Ihre Daten in Intervallen unter Verwendung der Funktion cut() teilen und diese Intervalle als diskrete Werte verwenden. –

+0

Ok, nochmals vielen Dank! – user2724998

3

Nach 4 Jahren einen Kommentar zu diesem Beitrag: Es ist wichtig, dass die „Werte“ die niedrigste und 1 der höchste Wert ist map Ihre Variablenwerte zwischen 0 und 1, 0 zu beachten. In diesem Beispiel passt es zufällig zu den Werten der Variablen, die 0 zu 1 sind. (Ich hoffe, dass ich nicht Unsinn erzähle, aber zumindest in meiner kleinen Erfahrung ist das der Fall)