Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


Il Laboratorio di Analisi dei Dati con R, dell'Università di Teramo su piattaforma Meet, inizia il 9 aprile 2021 - Iscrizione - email
r:grafici:grafici_a_barre

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

  • plot (funzione generica);
  • barplot() (pacchetto graphics);
  • barchart (pacchetto lattice);
  • geom_bar (pacchetto ggplot2).

Con una variabile

Grafico a barre semplice

  |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

 | 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 <color red>horiz=T</color>.

Inoltre:

  • Sono stati selezionati i colori con l'argomento <color red>col</color>.
  • È stato introdotto il titolo del grafico con l'argomento <color red>main</color>.
  • Sono state ridotte le dimensioni dei caratteri dell'asse dei valori (<color red>cex.axis</color>) e delle etichette (<color red>cex.names</color>).
  • Sono state inoltre cambiate le etichette di modalità originarie: <color red>names.arg=c(…)</color>.

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)
  | Grafico con barre riordinate

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 <color red>beside=T</color>.

 |Grafico a barre raggruppate
# 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 <color red>beside=F</color>.

 |Grafico a barre sovrapposte
#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

 |Grafico a barre sovrapposte
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."))
r/grafici/grafici_a_barre.txt · Ultima modifica: 26/02/2020 17:23 (modifica esterna)