2012-08-07 13 views
27

Desidero stampare un grafico con colori diversi in base ai valori. Ho scritto il codice qui sotto,Stampa con colori condizionali in base ai valori 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") 

Ora, se il valore di X è> 0, allora che valore dovrebbe essere di colore verde (nel grafico). se il valore di Y è> 0, allora quel valore dovrebbe essere in rosso (nel grafico).

Qualcuno può aiutarmi in questo?

+3

[domande riproducibili] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) sono la strada da percorrere. Ho modificato la tua domanda per renderlo tale. – mnel

+0

[Una domanda precedente fornisce una risposta.] (Http://stackoverflow.com/questions/8774002/color-data-point-in-r-plot/) –

risposta

58

L'argomento col imposterà i colori, è possibile utilizzarlo in combinazione con un'istruzione ifelse. Vedi ?plot per maggiori dettagli.

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

enter image description here

di fare la stessa cosa in ggplot2.

#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 molto bello. Anche per mostrare a newby come fare un esempio riproducibile. – Andrie

+0

@mnel risposta molto bella. Anche se ho una domanda per te. Se voglio visualizzare un intervallo di valori come x> 1 & y> 2, quindi il colore verde, x < 1 & y > 2, quindi il colore rosso e il resto dei punti in grigio. Come sarò in grado di realizzarlo? – Akshay

+3

@aarn - un paio di istruzioni nidificate di ifelse dovrebbero farlo. per esempio 'col = ifelse (x> 1 & y> 1, 'red', ifelse (x <1&y> 2, 'green', 'gray'))' – mnel

Problemi correlati