domenica 9 dicembre 2018

Grafici a torta

Per la rappresentazione grafica di dati qualitativi il metodo più generico, ma anche il più limitato, in quanto adatto essenzialmente alla rappresentazione dei rapporti percentuali, è rappresentato dai grafici a torta o pie chart. A causa del fatto che l'occhio umano ha una scarsa capacità nella valutazione degli angoli i grafici a torta non sono raccomandati nella rappresentazione di dati scientifici [1]. Nonostante questo anche in R sono disponibili strumenti grafici per la realizzazione dei grafici a torta.

Nell'esempio, tratto da Marubini [2], il numero di individui prodotti per ciascuna delle varietà AB, Ab, aB, ab in un esperimento di ibridazione di specie vegetali era:

AB
Ab
aB
ab
72
29
36
12

Con questo script viene generato un grafico a torta con i valori originali trasformati in percentuale e con una legenda esterna. Copiatelo e incollatelo nella Console di R e premete Invio:

# GRAFICO A TORTA
#
val <- c(72, 29, 36, 12) # valori
eti <- c("AB","Ab","aB","ab") # etichette
percent <- round(100*val/sum(val), 1) # percentuale per ciascun valore
#
windows() # apre una nuova finestra
pie(val, labels = percent, main = "Individui prodotti per ciascuna varietà", col = rainbow(length(val))) # grafico a torta con percentuali e legenda esterna
legend("topright", eti, cex = 0.8, fill = rainbow(length(val))) # riporta la legenda
#

Con le prime tre righe di codice sono generati:
→ l'array val che contiene i valori corrispondenti alle quattro “fette” della torta;
→ l'array eti che contiene le etichette/descrizioni associate alle “fette”;
→ l'array percent che contiene i valori dell'array val trasformati in percentuale (ciascun valore val viene diviso per la somma totale dei valori sum(val) e moltiplicato per 100 (100*), quindi il risultato viene arrotondato a un decimale con l'argomento , 1 e viene infine salvato (<- ) nell'array percent).

Dopo avere aperto alla quarta riga una nuova finestra grafica con la funzione windows(), alla quinta riga la funzione pie() traccia un grafico a torta impiegando i seguenti argomenti:
→ i valori val da rappresentare;
→ le relative etichette label con i valori percentuali percent calcolati in precedenza;
→ il titolo del grafico main;
→ il colore col che viene cambiato a ciascuna “fetta” con la funzione rainbow() e impiegando tanti colori quante sono le fette con la funzione lenght(val).

Infine viene riportata la legenda con la funzione legend() che prevede i seguenti argomenti:
"topright" per la posizione in alto a destra;
eti per le etichette da impiegare;
cex = 0.8 per le dimensioni;
fill per i colori che riprendono ovviamente quelli definiti nella funzione pie().


Oltre ai grafici a torta tradizionali è possibile generare grafici a torta 3D mediante un pacchetto aggiuntivo, il pacchetto plotrix, che deve essere scaricato dal CRAN.

In quest'altro script le novità rispetto al precedente sono:
→ l'impiego del pacchetto plotrix;
→ la funzione pie3D() in sostituzione della funzione pie();
→ l'argomento explode=0.1 che consente di variare quanto le fette sono distanziate l'una dall'altra (è possibile scegliere non solo valori superiori ma anche valori inferiori a 0.1);
→ l'argomento bty="n" che consente di eliminare il riquadro delle didascalie che era presente nella figura precedente.

Se non l'avete già fatto, prima di eseguire lo script dovete scaricare e installare il pacchetto plotrixCopiate lo script, incollatelo nella Console di R e premete ↵ Invio:

# GRAFICO A TORTA 3D
#
library(plotrix) # carica il pacchetto
#
val <- c(72, 29, 36, 12) # valori
eti <- c("AB","Ab","aB","ab") # etichette
percent <- round(100*val/sum(val), 1) # percentuale per ciascun valore
#
windows() # apre una nuova finestra
pie3D(val, labels = percent, explode = 0.1, main = "Individui prodotti per ciascuna varietà", col = rainbow(length(val))) # grafico a torta 3D con percentuali e legenda esterna
legend("topright", eti, cex = 0.8, fill = rainbow(length(val)), bty="n") # riporta la legenda
#



Altre modalità di rappresentazione dei grafici a torta sono possibili impiegando il pacchetto plotly [3] e il pacchetto ggplot2 [4].


----------

[1] "Percentages ... can also be expressed using a pie-chart, but since the human eye is very poor at comparing angles, we do not recommend these for display purposes". Campbell MJ, Machin D. Medical Statistics. A Commonsense Approach. John Wiley & Sons, New York, 1993, ISBN 0-471-93764-9, p. 54.


[3] Vedere: Pie Charts in R. How to make pie charts in R using plotly. URL consultato il 9/12/2018.

[4] Vedere: ggplot2 pie chart in STDHA. Statistical tools for high-throughput data analysis. URL consultato il 9/12/2018.

1 commento:

  1. Salve, in primis ringrazio quanti si sono impegnati e si stanno impegnando per realizzare questa web-guide per R. Vorrei chiedervi se fosse possibile aggiungere i valori (non in percentuale ma i valori reali) in un grafico a barre. Vorrei mostrare su ogni barra il suo valore corrispondente. Ho provato ad usare la funzione labels ma R non me lo permette. Avete qualche suggerimento? Grazie

    RispondiElimina