Indice
Grafici a barre
I grafici a barre sono indicati per rappresentare una o più variabili categoriali.
In questo tipo di grafici, ogni modalità della variabile (categoria) viene rappresentata da una barra, la cui altezza (o lunghezza) è proporzionale alla frequenza o alla percentuale della modalità stessa.
Per le variabili nominali, è preferibile utilizzare colori diversi per ciascuna barra, allo scopo di sottolineare l'autonomia semantica delle modalità. Per quelle ordinali, uno stesso colore, o diverse gradazioni dello stesso colore, allo scopo di sottolineare invece l'ordinamento delle modalità stesse.
In R, le funzione per ottenere dei grafici a barre sono
Con una variabile
Grafico a barre semplice
Se si usa il comando plot()
con una variabile nominale o ordinale
require(MASS) plot(farms$Manag)
Si otterrà un risultato equivalente a
barplot(table(farms$Manag))
Il grafico a barre è infatti considerato il tipo di grafico di default per rappresentare le variabili nominali e ordinali (fattori e fattori ordinati).
Grafico a barre orizzontali
barplot(table(farms$Manag), horiz=T, col=c(3:6), cex.axis=0.8, cex.names=0.8, main="Grassland Management", names.arg=c("Biological", "Hobby", "Nat. Cons.", "Standard"))
In questo caso, le barre sono orizzontali in quanto è stato inserito l'argomento horiz=T
.
Inoltre:
- Sono stati selezionati i colori con l'argomento
col
. - È stato introdotto il titolo del grafico con l'argomento
main
. - Sono state ridotte le dimensioni dei caratteri dell'asse dei valori (
cex.axis
) e delle etichette (cex.names
). - Sono state inoltre cambiate le etichette di modalità originarie:
names.arg=c(…)
.
cfr. Parametri grafici
Grafico con barre riordinate
In questo caso, dobbiamo trasformare la tabella in un dataframe, e riordinare la variabile corrispondente alle frequenze (Freq
):
# tabella come dataframe df <- as.data.frame(table(farms$Manag)) # ordiniamo la variabile numerica df <- df[order(df$Freq, decreasing = T),]
Controlliamo il risultato
df
Var1 Freq 3 NM 6 4 SF 6 2 HF 5 1 BF 3
Ora tracciamo il grafico della variabile Freq
e usiamo l'argomento names.arg
per indicare il nome delle barre:
barplot(df$Freq, names.arg = df$Var1, col=c(2:5), cex.axis=0.8, cex.names=0.8)
Con due variabili
Con barplot
è possibile costruire grafici di vettori o matrici. Una tabella a doppia entrata viene trattata come una matrice di dati, mentre non è possibile indicare semplicemente due variabili.
Grafici a barre raggruppate
I grafici a barre raggruppate si ottengono con l'argomento beside=T
.
# costruisco la tabella table1<-table(farms$Use,farms$Manag) # costruisco il grafico della tabella barplot(table1, col=c(4:6),beside=T,main="Use by Management", legend.text=c("Hay Prod.","Intermediate","Grazing"), names.arg=c("Biol.", "Hobby", "Nat. Cons.", "Stand."))
Grafici a barre sovrapposte
I grafici a barre sovrapposte si ottengono con l'argomento beside=F
.
#grafico della tabella dell'esempio precedente barplot(table1, col=c(4:6),beside=F,main="Use by Management", legend.text=c("Hay Prod.","Interm.","Grazing"), names.arg=c("Biol.", "Hobby", "Nat. Cons.", "Stand."))
Grafici a barre sovrapposte percentuali
barplot(prop.table(table1, margin=2)*100, col=c(4:6), beside=F, main="Use by Management", legend.text=c("Hay Prod.","Intermediate","Grazing"), names.arg=c("Biol.", "Hobby", "Nat. Cons.", "Stand."))
Principali parametri
Per la gran parte dei parametri, vale quanto esposto in Parametri grafici.
height | vettore o matrice con i valori da rappresentare |
width | ampiezza delle barre |
space | spazio fra le barre |
beside | (in caso di due o più variabili) se FALSE , le barre sono sovrapposte; se TRUE sono raggruppate. |
horiz | barre orizzontali: il default è FALSE |
names.arg | nome delle categorie da rappresentare (se non indicato, vengono utilizzate le etichette di modalità) |
legend.text | Titolo della legenda. Se indicato, crea una legenda |
Vedi anche:
Script di esempio
- Es Barplot.R
# il dataset di esempio è nel pacchetto MASS require(MASS) # barre verticali plot(farms$Manag) barplot(table(farms$Manag)) # barre orizzontali barplot(table(farms$Manag), horiz=T, col=c(3:6), cex.axis=0.8, cex.names=0.8, main="Grassland Management", names.arg=c("Biological", "Hobby", "Nat. Cons.", "Standard")) # DUE VARIABILI # costruisco la tabella table1<-table(farms$Use,farms$Manag) # barre raggruppate barplot(table1, col=c(4:6),beside=T,main="Use by Management", legend.text=c("Hay Prod.","Intermediate","Grazing"), names.arg=c("Biol.", "Hobby", "Nat. Cons.", "Stand.")) # barre sovrapposte barplot(table1, col=c(4:6),beside=F,main="Use by Management", legend.text=c("Hay Prod.","Intermediate","Grazing"), names.arg=c("Biol.", "Hobby", "Nat. Cons.", "Stand.")) # barre sovrapposte percentuali barplot(prop.table(table1, margin=2)*100, col=c(4:6), beside=F, main="Use by Management", legend.text=c("Hay Prod.","Interm.","Grazing"), names.arg=c("Biol.", "Hobby", "Nat. Cons.", "Stand."))