2012-08-07 41 views
27

Quiero trazar un gráfico con diferentes colores según los valores. Escribí el código de abajo,Gráfico con colores condicionales basados ​​en los valores en 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") 

Ahora, si el valor de X es> 0, entonces ese valor debe estar en verde (en el gráfico). si el valor de Y es> 0, entonces ese valor debe estar en rojo (en el gráfico).

¿Puede alguien ayudarme en esto?

+3

[preguntas reproducibles] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) son el camino a seguir. He editado tu pregunta para que sea así. – mnel

+0

[Una pregunta anterior proporciona una respuesta.] (Http://stackoverflow.com/questions/8774002/color-data-point-in-r-plot/) –

Respuesta

58

El argumento col establecerá los colores, puede usar esto junto con una declaración ifelse. Ver ?plot para más detalles.

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

enter image description here

Para hacer lo mismo en 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 muy agradable. También para mostrar el newby cómo hacer un ejemplo reproducible. – Andrie

+0

@mnel muy buena respuesta. Aunque tengo una pregunta para ti. Si quiero poner el rango de valores como x> 1 y y> 2, entonces el color verde, x < 1 & y > 2 luego el color rojo y el resto de los puntos en color gris. ¿Cómo podré lograrlo? – Akshay

+3

@aarn - un par de declaraciones 'ifelse' anidadas deberían hacerlo. ej. 'col = ifelse (x> 1 & y> 1, 'rojo', ifelse (x <1&y> 2, 'verde', 'gris'))' – mnel

Cuestiones relacionadas