Implementation of parallel coordinates?

I want to implement parallel coordinates for my muldimensional result. Does anyone have a good link to its implementation in matlab or R? Furthermore, are there any suggestions regarding the best tool to use for producing the parallel coordinates?

Answers


R solution

lattice package comes with R and includes parallel function:

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

ggplot2 is also your friend here:

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))

lattice and ggplot require input data in different "shapes". For lattice it's a matrix form, each column is a variable represented on one parallel coordinate. For ggplot it's one column (Gains) and a separate indicator for the variable (Trader above). /this is the reason I used two different examples, not to mess with data reshaping here/.

If you need something quick, then lattice is probably for you. Ggplot requires some time investment.


GGobi has had for aeons (as its predecessor XGobi already had it).

You can access this via the rggobi package from R. And being open source, you get to look under the hood too.


If you are looking to use parallel coordinates, MATLAB has an implementation in the Statistics Toolbox: PARALLELCOORDS.

Otherwise if you want to implement one yourself, the basic version (without all of the bells and whistles) should be easy to do:

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))


The MASS package (available to most of the R installations) includes an implementation for parallel coordinates. The function parcoord.

From the examples of the ?parcoord -a bit corrected- for the Iris data set:

ir <- rbind(iris3[,,1], iris3[,,2], iris3[,,3])
parcoord(log(ir)[, c(1, 2, 3, 4)], col = 1 + (0:149)%/%50)

Need Your Help

Safari keeps forcing HTTPS on localhost

http https safari hsts

When I load http://localhost:3000 in Safari, Safari automatically redirects to https://localhost:3000. How can I disable this functionality?

What is the Haskell response to Node.js?

multithreading haskell concurrency node.js

I believe the Erlang community is not envious of Node.js as it does non-blocking I/O natively and has ways to scale deployments easily to more than one processor (something not even built-in in Nod...