2010-10-15 52 views
14

Tôi muốn thực hiện các tọa độ song song cho kết quả muldimensional của tôi. Có ai có một liên kết tốt để thực hiện của nó trong MATLAB hoặc R? Hơn nữa, có bất kỳ đề xuất nào về công cụ tốt nhất để sử dụng để sản xuất tọa độ song song không?Thực hiện tọa độ song song?

+5

Không có ý tưởng tại sao điều này đã được đóng cửa, có vẻ như hợp lý với tôi. ggplot2 có một hàm trợ giúp, ['ggpcp()'] (http://docs.ggplot2.org/0.9.3/ggpcp.html) cho phép bạn sử dụng bất kỳ khung dữ liệu nào với các geom chuẩn để tạo ra một âm mưu tọa độ song song . – naught101

+0

Bây giờ bạn có thể tạo các tọa độ song song tương tác với Plotly. Kiểm tra xem nó ra: https://plot.ly/r/parallel-coordinates-plot/ – bcd

Trả lời

20

giải pháp R

lưới gói đi kèm với R và bao gồm parallel chức năng:

parallel(~iris[1:4] | Species, iris) 

alt text

ggplot2 cũng là bạn của bạn ở đây:

012.
D <- data.frame(Gain = rnorm(20), 
       Trader = factor(LETTERS[1:4]), 
       Day = factor(rep(1:5, each = 4))) 
ggplot(D) + 
    geom_line(aes(x = Trader, y = Gain, group = Day, color = Day)) 

alt text

mạng và ggplot đòi hỏi dữ liệu đầu vào trong "hình dạng" khác nhau. Đối với mạng là một dạng ma trận, mỗi cột là một biến được biểu diễn trên một tọa độ song song. Đối với ggplot đó là một cột (Lãi) và một chỉ báo riêng biệt cho biến (Trader ở trên)./Đây là lý do tôi sử dụng hai ví dụ khác nhau, không gây rối với việc định dạng lại dữ liệu ở đây /.

Nếu bạn cần một cái gì đó nhanh chóng, sau đó mạng có thể là dành cho bạn. Ggplot yêu cầu đầu tư thời gian.

+1

Đối với giải pháp ggplot2 - có cũng [ggparcoord] (http: //www.inside-r.Hàm org/packages/cran/GGally/docs/ggparcoord) trong gói [GGally] (http://cran.r-project.org/web/packages/GGally/). – radek

+0

Tôi đã thử sử dụng ggplot, nó hoạt động tốt cho 20 mục. Nhưng nếu tôi tạo ra 40 mục thì mỗi ngày sẽ có 8 điểm (ví dụ: có một đường thẳng đứng trong A cho ngày1 vì có 2 điểm). Bạn có thể vui lòng cho tôi biết một cách để chia dòng cho mỗi bốn điểm. –

6

Nếu bạn đang tìm cách sử dụng tọa độ song song, MATLAB có triển khai trong Hộp công cụ thống kê: PARALLELCOORDS.

Nếu không nếu bạn muốn thực hiện một mình, phiên bản cơ bản (không có tất cả các chuông và còi) nên dễ làm:

load fisheriris   %# load some data 
%#meas = zscore(meas);  %# to normalize the attributes 
h = plot(meas');   %'# plot 
set(gca, 'XTick',1:4, 'XTickLabel',{'SL' 'SW' 'PL' 'PW'}, 'XGrid','on') 
ylabel('feature value'), title('Parallel Coordinates') 

%# color according to class label 
c = grp2idx(species); 
clr = lines(numel(c)); 
arrayfun(@(k) set(h(c==k),'Color',clr(k,:)), unique(c)) 

alt text

+0

@ downvoter: Chăm sóc để giải thích bỏ phiếu xuống của bạn? OP yêu cầu mã R hoặc MATLAB; mã trên chỉ hoạt động tốt .. – Amro

+0

Xin lỗi, tôi đã bỏ phiếu vì tôi không nhận thấy câu hỏi này cũng đã yêu cầu MATLAB ... Tôi cảm thấy xấu và đã cố gắng xóa bỏ phiếu giảm giá của mình nhưng bị khóa. – cmiller8

6

GGobi đã cho kiếp (như người tiền nhiệm của nó XGobi đã có nó).

Bạn có thể truy cập thông qua gói rggobi từ R. Và là nguồn mở, bạn cũng có thể nhìn dưới mui xe.

4

Gói MASS (có sẵn cho hầu hết các bản cài đặt R) bao gồm việc triển khai các tọa độ song song. Hàm parcoord.

Từ ví dụ về các parcoord -a chút corrected- cho tập dữ liệu Iris:

ir <- rbind(iris3[,,1], iris3[,,2], iris3[,,3]) 
parcoord(log(ir)[, c(1, 2, 3, 4)], col = 1 + (0:149)%/%50) 
Các vấn đề liên quan