Spesso si dice che un'immagine vale più di mille parole, e ciò vale anche in ambito scientifico e statistico, dove la moltitudine
dei dati rende spesso poco chiaro il messaggio che essi portano. Per questo, si usano spesso grafici di vario tipo per visualizzare in modo più immediato il contenuto informativo delle nostre analisi. R possiede al suo interno un ambiente di plotting che permette di realizzare grafici con le informazioni inserite nelle proprie strutture dati, e che sarà oggetto di questa lezione.
Primi esempi
Iniziamo a realizzare qualche script in cui la funzione plot
mostri quanto velocemente possano essere rappresentati visualmente i nostri dati:
incassi <- c(1700, 858, 1834, 2100, 1652)
plot(incassi, type="l", col="green")
title(main="Incassi", col.main="blue", font.main="4")
L'immagine seguente mostra il risultato così ottenuto:
Le direttive che vengono inoltrate ad R per ottenere un grafico di questo tipo coinvolgono innanzitutto la funzione plot
title
type
- p
- h
- s
- o
Proponiamo ora una versione più avanzata dello script appena visto:
incassiNegozioA <- c(1700, 858, 1834, 2100, 1652)
incassiNegozioB <- c(1945, 1254, 1341, 1657, 1402)
mesi <- c("Gen", "Feb", "Mar", "Apr", "Mag")
df <- data.frame(mesi,incassiNegozioA, incassiNegozioB)
plot(df$incassiNegozioA, type="b", lty="dashed", col="red", axes=FALSE, ann=FALSE)
lines(df$incassiNegozioB, type="l", col="blue")
title(main="Incassi", col.main="blue", font.main="4", xlab="Mesi", ylab="Euro")
box()
axis(1, at=1:5, lab=df$mesi)
axis(2, las=1, at=seq(min(incassi), max(incassi), 300))
ed il risultato sarà il seguente:
Notiamo gli aspetti di maggior rilevanza:
- i dati provengono da un data.frame
difficoltà, in quanto sarà sufficiente usare l'operatore$
- sono presenti due linee
plot
lines
- la funzione
plot
non vengano nè etichettati nè disegnati gli assiaxes=FALSE, ann=FALSE
- la funzione
title
etichettare gli assixlab
ylab
- l'invocazione a
box
disegnare il riquadro intorno al graficoaxes=FALSE
- la funzione
axis
seq
Altri tipi di grafici
I grafici lineari non sono l'unico tipo di grafico esistente, ed R permette di realizzarne di vari generi. Prendiamo ad esempio il grafico a torta, che mostra un cerchio suddiviso in spicchi, ognuno dei quali rappresenta una percentuale.
Il seguente script predispone un grafico a torta, sfruttando la funzione e pie
:
incassi <- c(1945, 1254, 1341, 1657, 1402)
mesi <- c("Gen", "Feb", "Mar", "Apr", "Mag")
df <- data.frame(mesi,incassi)
pie(df$incassi, labels=df$mesi)
Questo il risultato che se ne ricava:

R ci permette anche di modellare le etichette in maniera da avere anche la percentuale corrispondente alle singole fette. Sarà sufficiente eseguire un'operazione di questo tipo:
incassi <- c(1945, 1254, 1341, 1657, 1402)
etichette <- paste(incassi," (",round(incassi/sum(incassi)*100, 1), "%)")
pie(df$incassi, labels=etichette)
dove il testo delle etichette sarà frutto di un calcolo di proporzioni.
Oltre a grafici a torta ve ne sono molti altri disponibili come:
- grafici a barre
barplot
- grafici a punti
dotchart
- istogrammi
hist
Un aspetto interessante è che i parametri che verranno coinvolti in tutte queste funzioni saranno gli stessi sia come denominazione sia come utilizzo, rendendo semplice ed uniforme l'uso pratico dei vari tipi di grafico disponibili.
Aggiungere una legenda
Ai fini della leggibilità del grafico, l'aggiunta di una legenda è spesso fondamentale. Immaginiamo di volerne creare una simile:
Dovremo utilizzare la funzione legend
legend(1,2000,c("Incassi Negozio A", "Incassi Negozio B"), col=c("red","blue"), lty=c(3,1), pch=c(1, NA))
I parametri che passiamo sono:
- le coordinate
- le etichette
- il colore delle icone
col
- le icone
pch
lty
legend
Conclusioni
Abbiamo visto in questa lezione gli strumenti di base per creare grafici in R. Esistono molte tipologie di grafici, e la loro utilità dipende molto dal caso d'uso specifico.
Si consideri, inoltre, che esistono altri package oltre a quelli "di serie", che possono essere integrati nei nostri script e reperiti con facilità su Google: tali ulteriori alternativi possono portare beneficio sia dal punto di vista funzionale che da quello estetico.