2013-09-27 235 views
5

Một trong các gói có thể cho lô 3D tương tác là rgl. Những gì tôi muốn làm là để xây dựng 3D scatterplot với mã hóa màu sắc theo một số yếu tố biến. Các phân tán chiều 3D là cho kết quả tải từ phân tích plsr.Thêm chú thích vào ô scatter3d

Cốt truyện kết quả trông giống như

3D scatterplot of PLS loadings with color coding according to the groups of variables

Các dữ liệu ví dụ được đưa ra trong một bảng:

> loadings 

     |  Comp 1   |  Comp 2   | Comp 3   | Class 
-------------------------------------------------------------------------------------------      
TEMP | -0.0607044182964255 | "0.0437618450165671"  |"0.045124991801441" | "global" 
MW | "-0.13414890573833" | "-0.0970537799069731" |0.263043734662182" | "local" 
DM |"-0.183751529577861" | "-0.102703237685933" |"0.0640549385564205" | "global" 
CHG |"-0.0558781715833019"| "0.125155347350922"  |"-0.119258450107321" | "local" 

hoặc có thể được tạo ra:

loadings <- data.frame(Comp1 = c(1.2, 3.4, 5.6, 13.1), Comp2 = c(4.3, 1.2, 7.7, 9.8), 
         Comp3 = c(1.2,6.9,15.6,15.0), 
         row.names = c("TEMP", "MW", "DM", "CHG"), 
         Class = c("global", "local", "global", "local")) 
scatter3d(x=loadings[[1]], y=loadings[[2]], z=loadings[[3]], 
      point.col = as.numeric(as.factor(loadings[,4])), size = 10) 

âm mưu Thu có sa tôi phong cách, nhưng đơn giản hơn nhiều khi chỉ có hai mức độ biến "Class": 'toàn cầu' và 'địa phương'

enter image description here

Câu hỏi là: Có bất kỳ khả năng để thêm huyền thoại trong RGL hoặc có thể một số huyền thoại độc lập có thể được gắn vào cốt truyện? Cảm ơn bạn đã trợ giúp!

trả lời là:

scatter3d(x=loadings[[1]], y=loadings[[2]], z=loadings[[3]], 
      point.col = as.numeric(as.factor(loadings[,4])), size = 10, type = 's') 
text3d(x=1.1, y=c(.9,1), z=1.1,levels(loadings[[4]]),col="black") 
points3d(x=1.2,y=c(.9,1),z=1.1, col=as.numeric(as.factor(loadings[,4])), size=5) 

Cốt truyện có nhãn theo các lớp: enter image description here

+0

Vui lòng thêm mã và nếu dữ liệu có thể (hoặc thật hay làm-up) cho câu hỏi của bạn để làm cho một [repr tối thiểu ví dụ đáng kinh ngạc] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – SlowLearner

+0

Mã mới đó phát ra lỗi: "Lỗi trong tệp complete.cases (x, y, z): ...". P –

+0

Sửa lỗi đó. – Boddha

Trả lời

1

Đó không phải là một hình ảnh plot3d (trừ trường hợp có lẽ bạn có một gói nạp), nhưng trông giống như một scatter3d kết xuất được xây dựng với hàm scatter3d từ gói car của John Fox:

require(rgl) 
    require(car) 
    scatter3d(x=loadings[[1]], y=loadings[[2]], z=loadings[[3]], 
      point.col = as.numeric(as.factor(loadings[,4])), size = 10) 

Chức năng scatter3d phụ thuộc vào chức năng rgl nhưng có một số tùy chọn tùy chỉnh. Bạn không đưa ra mã để xây dựng một "huyền thoại", vì vậy tôi đã chơi xung quanh với các ví dụ được cung cấp trong RGL :: text3d:

text3d(1+ font/8, 1+cex/4, 1+famnum/8, text=paste(family, font), adj = 0.5, 
     color="blue", family=family, font=font, cex=cex) 

enter image description here

Với dữ liệu mới này là để đáp ứng với yêu cầu văn bản và điểm:

scatter3d(x=loadings[[1]], y=loadings[[2]], z=loadings[[3]], 
      point.col = as.numeric(as.factor(loadings[,4])), size = 10) 
text3d(x=1.1, y=c(.9,1,1.1), z=1.1, names(loadings) ,col="black") 
points3d(x=1.2,y=c(.9,1,1.1),z=1.1, col=as.numeric(as.factor(loadings[,4])), size=5) 

enter image description here

+0

có, nó thực sự là scatter3d, cố định nó. Vâng, nó trông đẹp, nhưng kỳ lạ và không có nhiều thông tin. kiểm tra văn bản. và tôi cần phải có nhãn màu, tương ứng với nhãn màu của điểm dữ liệu, trong chú giải. – Boddha

+0

Không nên quá khó để vẽ điểm và văn bản theo cách có cấu trúc như được minh họa. Bạn cần mô tả chi tiết mong muốn. –

+0

bây giờ là nó, tôi sẽ đặt kết quả ở trên. Cảm ơn bạn! – Boddha