2012-08-07 81 views
27

我想根據值繪製不同顏色的圖。我寫了下面的代碼,使用基於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") 

現在,如果X的值大於0,那麼該值應該是綠色的(在圖中)。如果Y的值大於0,那麼該值應該是紅色的(在圖中)。

有人可以幫我嗎?

+3

[重複性的問題](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)是要走的路。我已經編輯你的問題,使其如此。 – mnel 2012-08-07 02:14:43

+0

[以前的問題提供了答案。](http://stackoverflow.com/questions/8774002/color-data-point-in-r-plot/) – 2012-08-07 02:20:38

回答

58

參數col將設置顏色,您可以將其與ifelse語句一起使用。有關更多詳細信息,請參閱?plot

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

enter image description here

要做到同樣的事情在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非常好。同時也是爲了展示如何製作一個可重複的例子。 – Andrie 2012-08-07 05:00:34

+0

@ mnel很好的答案。雖然我有一個問題給你。如果我想提出x> 1&y> 2那麼值的範圍,然後是綠色,x < 1 & y > 2然後紅色,其餘的點以灰色。我將如何能夠完成它? – Akshay 2013-07-09 14:51:08

+3

@aarn - 一對嵌套的'ifelse'語句應該這樣做。例如'col = ifelse(x> 1&y> 1,'red',ifelse(x <1&y> 2,'green','gray'))' – mnel 2013-07-09 23:16:17