2011-09-19 42 views
35

Trong tập dữ liệu, tôi muốn lấy hai thuộc tính và tạo biểu đồ phân tán được giám sát. Có ai biết cách đưa màu sắc khác nhau cho mỗi lớp không?Làm thế nào để cho màu sắc cho mỗi lớp trong ô phân tán trong R?

Tôi đang cố gắng sử dụng col == c("red","blue","yellow") trong lệnh cốt truyện nhưng không chắc liệu nó có đúng không nếu tôi thêm một màu nữa, màu đó cũng có trong ô phân tán mặc dù tôi chỉ có 3 lớp.

Cảm ơn

Trả lời

2

Nếu bạn có các lớp tách ra trong một khung dữ liệu hoặc một ma trận, sau đó bạn có thể sử dụng matplot. Ví dụ, nếu chúng ta có

dat<-as.data.frame(cbind(c(1,2,5,7),c(2.1,4.2,-0.5,1),c(9,3,6,2.718))) 

plot.new() 
plot.window(c(0,nrow(dat)),range(dat)) 
matplot(dat,col=c("red","blue","yellow"),pch=20) 

Sau đó, bạn sẽ nhận được một phân tán nơi cột đầu tiên của dat đường cong màu đỏ, thứ hai màu xanh lam, và thứ ba trong vàng. Tất nhiên, nếu bạn muốn các giá trị x và y riêng biệt cho các lớp màu của mình, thì bạn có thể có datxdaty, v.v.

Một cách tiếp cận khác sẽ là cột thêm cột xác định màu bạn muốn (hoặc giữ một màu thêm vector màu sắc, điền nó lặp đi lặp lại với một vòng lặp for và một số chi nhánh if). Ví dụ, điều này sẽ giúp bạn có được cốt truyện giống nhau:

dat<-as.data.frame(
    cbind(c(1,2,5,7,2.1,4.2,-0.5,1,9,3,6,2.718) 
    ,c(rep("red",4),rep("blue",4),rep("yellow",4)))) 

dat[,1]=as.numeric(dat[,1]) #This is necessary because 
          #the second column consisting of strings confuses R 
          #into thinking that the first column must consist of strings, too 
plot(dat[,1],pch=20,col=dat[,2]) 
9

Một cách là sử dụng gói mạng và xyplot():

R> DF <- data.frame(x=1:10, y=rnorm(10)+5, 
+>     z=sample(letters[1:3], 10, replace=TRUE)) 
R> DF 
    x  y z 
1 1 3.91191 c 
2 2 4.57506 a 
3 3 3.16771 b 
4 4 5.37539 c 
5 5 4.99113 c 
6 6 5.41421 a 
7 7 6.68071 b 
8 8 5.58991 c 
9 9 5.03851 a 
10 10 4.59293 b 
R> with(DF, xyplot(y ~ x, group=z)) 

Bằng cách cung cấp thông tin nhóm rõ ràng qua biến z, bạn có được khác nhau màu sắc. Bạn có thể chỉ định màu sắc vv, xem tài liệu mạng.

z đây là một biến yếu tố mà chúng tôi có được mức (== chỉ số số), bạn cũng có thể làm

R> with(DF, plot(x, y, col=z)) 

nhưng đó là chưa minh bạch (với tôi, ít nhất :) sau đó xyplot() et al.

13

Dưới đây là ví dụ mà tôi đã tạo dựa trên this page.

library(e1071); library(ggplot2) 

mysvm  <- svm(Species ~ ., iris) 
Predicted <- predict(mysvm, iris) 

mydf = cbind(iris, Predicted) 
qplot(Petal.Length, Petal.Width, colour = Species, shape = Predicted, 
    data = iris) 

Điều này cung cấp cho bạn đầu ra. Bạn có thể dễ dàng phát hiện các loài bị phân loại sai từ hình này.

enter image description here

52

Đây là một giải pháp sử dụng đồ họa truyền thống (và dữ liệu Dirk của):

> DF <- data.frame(x=1:10, y=rnorm(10)+5, z=sample(letters[1:3], 10, replace=TRUE)) 
> DF 
    x  y z 
1 1 6.628380 c 
2 2 6.403279 b 
3 3 6.708716 a 
4 4 7.011677 c 
5 5 6.363794 a 
6 6 5.912945 b 
7 7 2.996335 a 
8 8 5.242786 c 
9 9 4.455582 c 
10 10 4.362427 a 
> attach(DF); plot(x, y, col=c("red","blue","green")[z]); detach(DF) 

này dựa trên thực tế là DF$z là một yếu tố, vì vậy khi Subsetting bởi nó, giá trị của nó sẽ được coi là số nguyên.Vì vậy, các yếu tố của véc tơ màu sắc sẽ thay đổi theo z như sau:

> c("red","blue","green")[DF$z] 
[1] "green" "blue" "red" "green" "red" "blue" "red" "green" "green" "red"  

Bạn có thể thêm một huyền thoại bằng cách sử dụng legend chức năng:

legend(x="topright", legend = levels(DF$z), col=c("red","blue","green"), pch=1) 
+1

Làm cách nào để thêm chú thích bằng chức năng chú thích? –

+2

@ tommy.carstensen Tôi đã thêm một ví dụ huyền thoại – Aniko

+0

Và nếu bạn có nhiều nhóm và không muốn chỉ định từng màu, hãy thử sử dụng hàm _grDevices_ 'colorRampPalette'. [link] (http://r.789695.n4.nabble.com/alternatives-to-RColorBrewer-td852872.html) – Rnoob

0

Giả sử các biến lớp là z, bạn có thể sử dụng:

with(df, plot(x, y, col = z)) 

tuy nhiên, điều quan trọng là z là biến yếu tố, vì R lưu trữ nội bộ các yếu tố dưới dạng số nguyên.

Bằng cách này, 1 là 'đen', 2 là 'đỏ', 3 là 'xanh lá cây, ....

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