2012-08-07 24 views
27

Ich möchte einen Graphen mit verschiedenen Farben basierend auf Werten darstellen. Ich schrieb den folgenden Code,Plot mit bedingten Farben basierend auf Werten in R

np_graph <- data.frame(C1 = -5:5, C2 = -5:5) 
x=np_graph2$C1 
y=np_graph2$C2 
plot(x,y,xlab="PC1",ylab="PC2") 

Nun, wenn der Wert von X> 0 ist, dann sollte dieser Wert in grün (in der Grafik). Wenn der Wert von Y> 0 ist, sollte dieser Wert rot sein (in der Grafik).

Kann mir jemand dabei helfen?

+3

[Reproduzierbare Fragen] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) sind der Weg zu gehen. Ich habe Ihre Frage bearbeitet, um es so zu machen. – mnel

+0

[Eine vorherige Frage liefert eine Antwort.] (Http://stackoverflow.com/questions/8774002/color-data-point-in-r-plot/) –

Antwort

58

Das Argument col wird die Farben festlegen, Sie könnten dies in Verbindung mit einer ifelse Anweisung verwenden. Weitere Informationen finden Sie unter ?plot.

# using base plot 
plot(x,y,xlab="PC1",ylab="PC2", col = ifelse(x < 0,'red','green'), pch = 19) 

enter image description here

die gleiche Sache in ggplot2 zu tun.

#using ggplot2 
library(ggplot2) 
ggplot(np_graph) + geom_point(aes(x = C1, y = C2, colour = C1 >0)) + 
    scale_colour_manual(name = 'PC1 > 0', values = setNames(c('red','green'),c(T, F))) + 
    xlab('PC1') + ylab('PC2') 

enter image description here

+1

+1 sehr nett. Auch um das Neue zu zeigen, wie man ein reproduzierbares Beispiel macht. – Andrie

+0

@ mnel sehr nette antwort. Obwohl ich eine Frage an dich habe. Wenn ich Wertebereiche wie x> 1 & y> 2 aufstellen möchte, dann grüne Farbe, x < 1 & y > 2 dann rote Farbe und den Rest der Punkte in grauer Farbe. Wie kann ich es erreichen? – Akshay

+3

@aarn - ein paar verschachtelte 'ifelse'-Anweisungen sollten es tun. zB 'col = ifelse (x> 1 & y> 1, 'rot', ifelse (x <1&y> 2, 'grün', 'grau'))' – mnel