2012-08-07 37 views
27

Tôi muốn vẽ đồ thị với các màu khác nhau dựa trên giá trị. Tôi đã viết mã bên dưới,Lô bằng màu có điều kiện dựa trên các giá trị trong 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") 

Bây giờ, nếu giá trị X là> 0 thì giá trị đó phải bằng màu xanh lá cây (trong biểu đồ). nếu giá trị của Y là> 0 thì giá trị đó phải bằng màu đỏ (trong biểu đồ).

Ai đó có thể giúp tôi trong vấn đề này không?

+3

[câu hỏi tái sản xuất] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) là con đường để đi. Tôi đã chỉnh sửa câu hỏi của bạn để làm cho nó như vậy. – mnel

+0

[Câu hỏi trước cung cấp câu trả lời.] (Http://stackoverflow.com/questions/8774002/color-data-point-in-r-plot/) –

Trả lời

58

Đối số col sẽ đặt màu, bạn có thể sử dụng điều này cùng với tuyên bố ifelse. Xem ?plot để biết thêm chi tiết.

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

enter image description here

Để làm điều tương tự trong 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 rất hay. Ngoài ra để hiển thị newby làm thế nào để tạo ra một ví dụ tái sản xuất. – Andrie

+0

@mnel câu trả lời rất hay. Mặc dù tôi có một câu hỏi cho bạn. Nếu tôi muốn đưa ra phạm vi giá trị như x> 1 & y> 2 thì màu xanh lá cây, x < 1 & y > 2 thì màu đỏ và phần còn lại của các điểm có màu xám. Làm thế nào tôi có thể hoàn thành nó? – Akshay

+3

@aarn - một vài câu lệnh ifelse lồng nhau nên thực hiện. ví dụ: 'col = ifelse (x> 1 & y> 1, 'đỏ', ifelse (x <1&y> 2, 'xanh', 'xám'))' – mnel

Các vấn đề liên quan