graphics - with - r-graph-gallery




Visualizzazione dei dati piĆ¹ sottoutilizzata (10)

Istogrammi e grafici a dispersione sono ottimi metodi per visualizzare i dati e la relazione tra le variabili, ma recentemente mi sono chiesto quali tecniche di visualizzazione mi mancano. Quale pensi che sia il tipo di trama più sottoutilizzato?

Le risposte dovrebbero:

  1. Non essere usato molto comunemente nella pratica.
  2. Essere comprensibile senza una grande quantità di discussioni di base.
  3. Essere applicabile in molte situazioni comuni.
  4. Includere codice riproducibile per creare un esempio (preferibilmente in R). Un'immagine collegata sarebbe carina.

Grafici a scatole! Esempio dalla guida R:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray")

Secondo me è il modo più pratico per dare una rapida occhiata ai dati o per confrontare le distribuzioni. Per le distribuzioni più complesse esiste un'estensione chiamata vioplot .



Mi piacciono anche le modifiche apportate da Tufte ai boxplots che consentono di eseguire il confronto dei piccoli multipli molto più facilmente perché sono molto "sottili" in orizzontale e non ingombrano la trama con inchiostro ridondante. Tuttavia, funziona meglio con un numero piuttosto elevato di categorie; se ne hai solo pochi su una trama, i normali riquadri (Tukey) sembrano migliori perché hanno un po 'più di peso per loro.

library(lattice)
library(taRifx)
compareplot(~weight | Diet * Time * Chick, 
  data.frame=cw , 
  main = "Chick Weights",
  box.show.mean=FALSE,
  box.show.whiskers=FALSE,
  box.show.box=FALSE
  )

Altri modi di renderli (incluso l'altro tipo di boxplot Tufte) sono discussi in questa domanda .


Mi piacciono molto i dotplots e quando li raccomando ad altri per problemi di dati appropriati sono invariabilmente sorpresi e felici. Non sembrano avere molto a che fare, e non riesco a capire perché.

Ecco un esempio di Quick-R:

Credo che Cleveland sia la più responsabile per lo sviluppo e la diffusione di questi, e l'esempio nel suo libro (in cui i dati difettosi sono stati facilmente rilevati con un dotplot) è un argomento potente per il loro uso. Nota che l'esempio sopra pone solo un punto per linea, mentre il loro vero potere viene fornito con più punti su ciascuna linea, con una legenda che spiega quale è quale. Ad esempio, è possibile utilizzare simboli o colori diversi per tre diversi punti temporali, e quindi ottenere facilmente un senso degli schemi temporali in diverse categorie.

Nell'esempio seguente (fatto in Excel di tutte le cose!), È possibile vedere chiaramente quale categoria potrebbe aver subito uno scambio di etichette.


Non dovremmo dimenticare la trama carina e (storicamente) importante di staminali e foglie (che anche Tufte ama!). Ottieni una panoramica numerica diretta della tua densità e forma dei dati (ovviamente se il tuo set di dati non è più grande di circa 200 punti). In R, la funzione stem produce il tuo dislay stelo e foglia (nello spazio di lavoro). Preferisco usare la funzione gstem dal pacchetto fmsb per disegnarlo direttamente in un dispositivo grafico. Di seguito è riportata una variazione della temperatura corporea del castoro (i dati devono essere inclusi nel set di dati predefinito) in una visualizzazione "stelo per foglia":

  require(fmsb)
  gstem(beaver1$temp)


Oltre all'eccellente lavoro di Tufte, raccomando i libri di William S. Cleveland: Visualizzazione dei dati e degli elementi dei dati grafici . Non solo sono eccellenti, ma sono stati tutti fatti in R, e credo che il codice sia pubblicamente disponibile.


Scopri il lavoro di Edward Tufte e specialmente questo libro

Puoi anche provare a prendere la sua presentazione itinerante . È abbastanza buono e include un fascio di quattro dei suoi libri. (giuro che non possiedo le azioni del suo editore!)

A proposito, mi piace la sua tecnica di visualizzazione dei dati sparkline. Sorpresa! Google lo ha già scritto e lo ha pubblicato su Google Code


Se il tuo grafico a dispersione ha così tanti punti che diventa un disastro completo, prova una trama a dispersione lisciata. Ecco un esempio:

library(mlbench) ## this package has a smiley function
n <- 1e5 ## number of points
p <- mlbench.smiley(n,sd1 = 0.4, sd2 = 0.4) ## make a smiley :-)
x <- p$x[,1]; y <- p$x[,2]
par(mfrow = c(1,2)) ## plot side by side
plot(x,y) ## left plot, regular scatter plot
smoothScatter(x,y) ## right plot, smoothed scatter plot

Il pacchetto hexbin (suggerito da @Dirk Eddelbuettel) viene utilizzato per lo stesso scopo, ma smoothScatter() ha il vantaggio di appartenere al pacchetto graphics e fa quindi parte dell'installazione R standard.



Le trame di violini (che combinano grafici a scatola con densità del kernel) sono relativamente esotiche e piuttosto interessanti. Il pacchetto vioplot in R ti permette di renderli abbastanza facilmente.

Ecco un esempio (il collegamento di wikipedia mostra anche un esempio):