2010-10-15 14 views
14

Voglio implementare coordinate parallele per il mio risultato muldimensional. Qualcuno ha un buon collegamento alla sua implementazione in MATLAB o R? Inoltre, ci sono suggerimenti riguardo al miglior strumento da usare per produrre le coordinate parallele?Implementazione di coordinate parallele?

+5

Nessuna idea perché questo era chiuso, sembra ragionevole per me. ggplot2 ha una funzione di supporto, ['ggpcp()'] (http://docs.ggplot2.org/0.9.3/ggpcp.html) che ti permette di usare qualsiasi frame di dati con le geome standard per creare una trama di coordinate parallele . – naught101

+0

Ora è possibile creare coordinate parallele interattive con Plotly. Dai un'occhiata a: https://plot.ly/r/parallel-coordinates-plot/ – bcd

risposta

20

soluzione R

reticolo pacchetto viene fornito con R e comprende parallel funzione:

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

alt text

ggplot2 è anche tuo amico qui:

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

reticolo e ggplot richiedono dati di input in diverse "forme". Per reticolo è una matrice, ogni colonna è una variabile rappresentata su una coordinata parallela. Per ggplot è una colonna (guadagni) e un indicatore separato per la variabile (commerciante sopra)./questo è il motivo per cui ho usato due diversi esempi, per non scherzare con il rimodellamento dei dati qui /.

Se avete bisogno di qualcosa di veloce, allora reticolo è probabilmente per voi. Ggplot richiede un certo investimento di tempo.

+1

Per la soluzione ggplot2 - c'è anche [ggparcoord] (http: //www.inside-r.org/packages/cran/GGally/docs/ggparcoord) nel pacchetto [GGally] (http://cran.r-project.org/web/packages/GGally/). – radek

+0

Stavo provando a usare ggplot, funziona bene per 20 articoli. Ma se generano 40 oggetti, ogni giorno ottengono 8 punti (ad esempio c'è una linea verticale in A per il giorno1 perché ci sono 2 punti). Potresti dirmi un modo per dividere la linea per ogni quattro punti. –

6

Se si desidera utilizzare le coordinate parallele, MATLAB ha un'implementazione in Strumenti delle statistiche: PARALLELCOORDS.

caso contrario, se si desidera implementare uno voi stessi, la versione base (senza tutte le campane e fischietti) dovrebbe essere facile da fare:

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: ti interessa spiegare il tuo voto negativo? OP ha richiesto il codice R o MATLAB; il codice sopra funziona perfettamente .. – Amro

+0

Scusa, ho downvoted perché non ho notato la domanda anche per MATLAB ... Mi sento male e ho provato a rimuovere il mio downvote ma è bloccato. – cmiller8

6

GGobi ha avuto per eoni (come il suo predecessore XGobi l'aveva già).

È possibile accedere a questo tramite il pacchetto rggobi da R. Ed essendo open source, puoi anche guardare sotto il cofano.

4

Il pacchetto MASS (disponibile per la maggior parte delle installazioni R) include un'implementazione per le coordinate parallele. La funzione parcoord.

Dagli esempi della parcoord -a po corrected- per il set di dati Iris:?

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