Я хочу реализовать параллельные координаты для моего многомерного результата. Кто-нибудь имеет хорошую ссылку на его реализацию в Matlab или R? Кроме того, есть ли предложения относительно лучшего инструмента для создания параллельных координат?
Реализация параллельных координат?
Ответ 1
R-решение
пакет решетки поставляется с R и включает в себя функцию parallel
:
parallel(~iris[1:4] | Species, iris)
ggplot2 также ваш друг здесь:
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))
решетка и ggplot требуют ввода данных в разных "формах". Для решетки это матричная форма, каждый столбец представляет собой переменную, представленную на одной параллельной координате. Для ggplot это один столбец (Gains) и отдельный индикатор для переменной (трейдер выше)./по этой причине я использовал два разных примера, чтобы не перепутаться с изменением данных здесь /.
Если вам нужно что-то быстро, то решетка, вероятно, для вас. Для Ggplot требуется некоторое время.
Ответ 2
Если вы хотите использовать параллельные координаты, MATLAB имеет реализацию в панели инструментов статистики: PARALLELCOORDS.
В противном случае, если вы хотите реализовать его самостоятельно, базовая версия (без всех колоколов и свистов) должна быть легкой:
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))
Ответ 3
GGobi имел для эонов (как его предшественник XGobi уже имел).
Вы можете получить доступ к этому через rggobi пакет R. И, будучи открытым исходным кодом, вы также можете смотреть под капотом.
Ответ 4
Пакет MASS (доступный большинству установок R) включает реализацию для параллельных координат. Функция parcoord
.
Из примеров "паркодера" - бит исправлен - для набора данных Iris:
ir <- rbind(iris3[,,1], iris3[,,2], iris3[,,3])
parcoord(log(ir)[, c(1, 2, 3, 4)], col = 1 + (0:149)%/%50)