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?
risposta
soluzione R
reticolo pacchetto viene fornito con R e comprende parallel
funzione:
parallel(~iris[1:4] | Species, iris)
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))
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.
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
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. –
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))
@downvoter: ti interessa spiegare il tuo voto negativo? OP ha richiesto il codice R o MATLAB; il codice sopra funziona perfettamente .. – Amro
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
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)
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
Ora è possibile creare coordinate parallele interattive con Plotly. Dai un'occhiata a: https://plot.ly/r/parallel-coordinates-plot/ – bcd