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?
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))
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.
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, groups = 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.