giovedì 30 luglio 2009

Grafici con R: diagramma circolare (o grafico a torta)

Questo è forse uno dei grafici più comuni, essendo una rappresentazione grafica di veloce lettura anche da parte dei meno attenti.
Vediamo alcuni modi per rappresentare un grafico a torta in R. Utilizzerò qui i dati relativi alle elezioni dell'EuroParlamento del 2009: su un totale di 736 europarlamentari, questi i numeri dei singoli partiti presenti:

EPP: 265
S&D: 184
ALDE: 84
Greens-EFA: 55
ECR: 54
EUL-NGL: 35
EFD: 32
NI: 27


Creiamo un grafico a torta semplice con i seguenti comandi:

slices <- c(265, 184, 84, 55, 54, 35, 32, 27)
lbls <- c("EPP", "S&D", "ALDE", "Greens-EFA", "ECR", "EUL-NGL", "NFD", "NI")
pie(slices, labels = lbls, main="Grafico a torta dei partiti presenti all'EuroParlamento 2009")




Come vedete dall'immagine, sono già presenti di default le etichette per ogni fetta del grafico. Può essere utile aggiungere le percentuali:

slices <- c(265, 184, 84, 55, 54, 35, 32, 27)
lbls <- c("EPP", "S&D", "ALDE", "Greens-EFA", "ECR", "EUL-NGL", "NFD", "NI")
pct <- round(slices/sum(slices)*100) #calcolo delle percentuali
lbls <- paste(lbls, pct) # aggiungo il numero percentuale alle etichette
lbls <- paste(lbls,"%",sep="") # aggiungo il simbolo % alle etichette
pie(slices, labels = lbls, main="Grafico a torta dei partiti presenti all'EuroParlamento 2009")




Aggiungiamo, tra parentesi, anche il numero netto di EuroParlamentari per ogni partito:

slices <- c(265, 184, 84, 55, 54, 35, 32, 27)
lbls <- c("EPP", "S&D", "ALDE", "Greens-EFA", "ECR", "EUL-NGL", "NFD", "NI")
pct <- round(slices/sum(slices)*100) #calcolo delle percentuali
lbls <- paste(lbls, pct) # aggiungo il numero percentuale alle etichette
lbls <- paste(lbls,"%",sep="") # aggiungo il simbolo % alle etichette
lbls <- paste(lbls, "(", slices, ")") #aggiungo tra parentesi il numero di europarlamentari
pie(slices, labels = lbls, main="Grafico a torta dei partiti presenti all'EuroParlamento 2009")




Senza ulteriori specificazioni, ogni fetta della torta viene colorata con un colore leggermente diverso. Possiamo cambiare questa impostazione, ad esempio scegliendo un unico colore per ogni fetta (è sufficiente aggiungere, ad esempio, col="red"), oppure possiamo decidere di colorare diversamente ogni fetta, con il seguente comando: col=rainbow(length(lbls)). Ecco come appare ora il grafico:



Oppure possiamo decidere noi singolarmente il colore di ogni fetta. Ad esempio se vogliamo far alternare i colori rosso e blu, creiamo un vettore contenente i colori che vogliamo utilizzare, nell'ordine delle fette:

color <- c("red", "blue", "red", "blue", "red", "blue", "red", "blue")
pie(slices, labels = lbls, col=color, main="Grafico a torta dei partiti presenti all'EuroParlamento 2009")


Se vogliamo invertire l'ordine con cui sono presentati i dati nella torta (normalmente in senso antiorario), aggiungiamo clockwise=TRUE tra gli attributi di pie.




Per creare un grafico a torta tridimensionale, dobbiamo caricare il package plotrix, ed utilizzare la funzione pie3D(), con gli stessi attributi visti finora, ed altri:

library(plotrix)
slices <- c(265, 184, 84, 55, 54, 35, 32, 27)
lbls <- c("EPP", "S&D", "ALDE", "Greens-EFA", "ECR", "EUL-NGL", "NFD", "NI")
pct <- round(slices/sum(slices)*100) #calcolo delle percentuali
lbls <- paste(lbls, pct) # aggiungo il numero percentuale alle etichette
lbls <- paste(lbls,"%",sep="") # aggiungo il simbolo % alle etichette
pie3D(slices, labels = lbls, main="Grafico a torta dei partiti presenti all'EuroParlamento 2009")




Questo grafico può essere ampiamente personalizzato. Possiamo ad esempio specificare l'altezza della torta (height=) o il suo raggio (radius=), l'angolo a partire dal quale cominciare a tagliare le fette espresso in radianti (start=), a quale angolatura presentare la torta (theta=), i colori (col=), la posizione delle etichette (labelpos=), e il loro colore (labelcol=), e possiamo scegliere di separare le fette con il comando explode=. Esaminate questo codice di esempio in R:

pie3D(slices, labels = lbls, height=.1, radius=.9, explode=.2, labelcol="black", main="Grafico a torta dei partiti presenti all'EuroParlamento 2009", theta=pi/12)

Nessun commento:

Posta un commento