Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plot with conditional colors based on values in R [duplicate]

I want to plot a graph with different colors based on values. I wrote the below code,

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

Now, if the value of X is >0, then that value should be in green (in the graph). if the value of Y is >0, then that value should be in red (in the graph).

Can some one help me in this?

like image 719
I am Avatar asked Aug 07 '12 01:08

I am


2 Answers

The argument col will set the colours, you could use this in conjunction with an ifelse statement. See ?plot for more details.

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

enter image description here

To do the same thing 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

like image 78
mnel Avatar answered Sep 17 '22 01:09

mnel


Alternatively, in ggplot2, you can set a new column "Color" based on the ifelse statement and then use scale_color_identity to apply those color on the graph:

np_graph %>% mutate(Color = ifelse(C1 > 0, "green", "red")) %>%   ggplot(aes(x = C1, y= C2, color = Color))+   geom_point()+   scale_color_identity() 

enter image description here

like image 33
dc37 Avatar answered Sep 17 '22 01:09

dc37