Il modo migliore per visualizzare l'attrito usando R?


15

Attraverso questo sito ho scoperto di recente Sankey Diagrams, un ottimo modo per visualizzare ciò che sta accadendo in un diagramma di flusso tradizionale .

Ecco un buon esempio di un diagramma di Sankey di George M. Whitesides e George W. Crabtree , Non dimenticare la ricerca fondamentale a lungo termine sull'energia Fonte; Non dimenticare la ricerca fondamentale a lungo termine in energia , scienza 9 febbraio 2007: vol. 315. no. 5813, pagg. 796 - 798.

Dopo essermi reso conto che non esisteva un pacchetto R di Sankey, ho trovato uno script R online , sfortunatamente questo script è piuttosto grezzo e piuttosto limitato. Con grandi speranze ho chiesto un pacchetto R Sankey o una funzione più matura su StackOverflow , ma con mia grande sorpresa sembra che non abbiamo una funzione matura per la creazione di diagrammi Sankey in R.

Dopo aver pubblicato una taglia Geek On Acid è stato così gentile da suggerire un piccolo trucco sullo script esistente che lo ha fatto funzionare più o meno per il mio scopo specifico.

Lo script R migliorato ha prodotto questo diagramma, Diagramma R-Sankey di Geek On Acid Fonte; stackoverflow.com .

Ma la mancanza di un pacchetto R indica che Sankey Diagrams non è un modo così straordinario per visualizzare l'attrito usando R in un flusso di dati come quello presentato nel diagramma sopra (vedi domanda stackoverflow iniziale per dati e codice R. Forse c'è un modo migliore per visualizzare l'attrito.

Quale pensi sia il modo migliore per visualizzare l'attrito in un flusso di dati usando R?


7
È molto difficile far sembrare bello il diagramma in qualsiasi modo automatizzato (il primo esempio è stato probabilmente fatto dall'artista posizionando manualmente i nodi). Difficile da programmare non ha nulla a che fare con la sua utilità come strumento grafico. Puoi trovare più motivazione in questo mio post sul sito GIS sulla visualizzazione dei flussi. Inoltre, do alcuni esempi di parset e diagrammi a punti su una risposta a questo sito.
Andy W,

@AndyW, grazie per un commento molto utile. Studierò i diversi metodi e sperimenterò i miei dati. Grazie.
Eric Fail,

Quel diagramma in alto è una grande idea, ma mi sembra che la somma delle fonti non sia uguale alla somma dei pozzi (supponendo che l'altezza descriva la grandezza)
nulla101

Ah .. non importa, l'ho letto male ... i bit più chiari sulle fonti sono solo etichette, non parte dei dati. Un po 'di confusione ..
naught101

Risposte:


4

Sono d'accordo con @gung. Il diagramma di Sankey che hai pubblicato è, credo, un ottimo esempio di dove la tecnica può aiutare. Sebbene sia complicato, anche il contesto (input e output di energia) è complesso ed è difficile pensare a un modo migliore di visualizzare i percorsi degli input-to-output-come-nuovi-input in più categorie di utilizzo.

Ora, per l'esempio di logoramento che hai pubblicato, come altri hanno notato, non è utile utilizzare un diagramma di Sankey. Penso che devi pubblicare il tuo set completo di variabili se vuoi una buona raccomandazione su visualizzazioni alternative. Se vuoi semplicemente mostrare differenze nelle fonti di logoramento tra siti e clinici, una serie di piccoli grafici di dot plot potrebbe essere la più facile da comprendere per il tuo pubblico e da implementare ( vedi questo esempio , dove nel tuo caso potrebbero essere i gruppi i siti, gli elementi all'interno dei gruppi sarebbero le cause di attrito e l'asse orizzontale sarebbe 0-100%).

Se il diagramma di Sankey è qualcosa che vuoi usare e sei disposto a dilettarti in un altro linguaggio di alto livello, c'è un bell'esempio (con codice) sulla galleria per il pacchetto di tracciamento di Python, matplotlib.


3

Non presumo necessariamente che la mancanza di un metodo implichi che il metodo non è importante o non è utile. Dopotutto, per tutti i metodi che esistono attualmente in R, c'è stato un tempo (molto probabilmente recente - R ha solo ~ 10 anni) in cui non c'era un pacchetto per esso.

Tuttavia, dovrei pensare che ci siano molti modi per visualizzare dati come l'attrito. Il mio primo pensiero, guardando il tuo grafico, è che potrebbe essere rappresentato con un diagramma a punti . Esistono anche altre possibilità. La funzionalità extra del diagramma di Sankey entrerà in gioco quando hai un po 'di attrito a causa di una causa particolare in un punto, e poi più a causa della stessa causa in seguito con altri ingressi e uscite in mezzo. Sarebbe più complicato rappresentare con grafici standard (è anche più difficile da seguire anche con un diagramma di Sankey - ad esempio, quello in cima alla pagina richiede parecchio lavoro da leggere). Dal momento che non sembra che tu lo abbia, il diagramma di Sankey sembra essere carino, ma eccessivo.


1
Il primo grafico dato è IMO fantastico. Ha molti dettagli che sarebbe difficile catturare in modo così intuitivo in una serie di dot plot. Anche il diagramma di Sankey è buono per visualizzare i flussi da e verso diversi nodi (la ricombinazione in energia usata e energia persa).
Andy W,

@AndyW, non intendo battere quella cifra. È molto difficile leggere in gran parte b / c che contiene molte informazioni. Il fatto che ti coinvolga e ti trattiene lì per un po 'può essere un vero vantaggio: non intendevo che la mia descrizione fosse negativa. OTOH, i dati del PO sono abbastanza semplici da consentire la trasmissione di grafici più semplici.
gung - Ripristina Monica

Un buon punto, se i dati del PO non sono più complicati di quanto dati, probabilmente è più un problema di quanto valga la pena! Non vorrei nemmeno pensare a convertire il diagramma di energia originale in una serie di diagrammi a punti.
Andy W,

@gung, grazie per aver risposto al mio post. Sono d'accordo, la mancanza di metodo non dovrebbe essere presa come un segno definitivo che il metodo non è buono o utile, e sicuramente non ho dato op sui diagrammi di Sankey (SD). Per quanto riguarda i miei dati, ciò che vedi nel diagramma è solo la dimensione massima dei miei dati, ho i dati raccolti in 4 siti diversi e da 7 diversi clinici e vorrei includere queste informazioni nella mia trama, come una sorta di suddividere all'interno del flusso complessivo. Potrebbe sembrare eccessivo con i dati attuali, ma credo che una SD sarebbe utile se includessi tutte le mie variabili.
Eric Fail,

Con maggiore complessità, il diagramma di Sankey è probabilmente la soluzione migliore. Vale anche la pena dare un'occhiata ad alcuni dei post di @ AndyW, come quelli collegati sopra. Ha dato molte buone risposte che potrebbero essere rilevanti. Ad esempio, se fai clic sul suo nome per accedere alla sua pagina, quindi fai clic sul tag di visualizzazione dei dati lì, puoi consultare i suoi post.
gung - Ripristina Monica

1

Che ne dici di usare il codice R per scrivere un file SVG con le larghezze delle frecce impostate in base ai tuoi dati e un layout semplice. Quindi carica in Inkscape e piega le frecce intorno, aggiungi etichette ecc. Ecc. Al contenuto del tuo cuore per rendere qualcosa di carino.

Problema evidente: è necessario ripetere tutte le impostazioni in Inkscape se i dati cambiano (anche se potresti essere in grado di utilizzare il tuo grazioso SVG da Inkscape come modello e sostituire semplicemente le nuove larghezze delle frecce).

Ma onestamente, se quel pasticcio multicolore di scarabocchi tremolanti in cima è un buon diagramma di Sankey, odio vederne uno cattivo a stomaco pieno [anche se fissarlo per qualche altro minuto mi ha dato un indizio su di cosa si tratta, una buona grafica non dovrebbe averne bisogno].


2
Sarei interessato a vedere un modo migliore di visualizzare quei dati. Ci sono MOLTE informazioni in quella trama (e più variabili diverse), quindi ovviamente sarà complicato ...
nought101

2
Le micro mappe di Dan Carr impiegano molto tempo a digerire l'intero grafico, così come ogni mappa stradale dettagliata. Né è necessariamente una cosa negativa. Vedi il post sul blog di James Chesire, Fast Thinking e Slow Thinking Visualization .
Andy W
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.