Vediamo come rappresentare i grafici a linee impiegando
una funzione e un set di dati inclusi nella installazione base di R.
Si tratta della funzione plot()
[1], che viene impiegata per una molteplicità di rappresentazioni, e del set di dati WorldPhones.
Se nella Console di R digitale data()
potete
vedere l'elenco che include questo e gli altri set di dati che sono
caricati automaticamente all'avvio del programma.
Copiate
e incollate nella Console di R
questo script e premete ↵
Invio:
#
GRAFICI A LINEE set di dati di R
#
mydata
<- data.frame(WorldPhones) # trasforma il set di dati
WorldPhones in dataframe
mydata
# mostra i dati
#
windows()
# apre una nuova finestra
#
#
traccia il grafico a linee per la prima variabile
plot(mydata$N.Amer,
type="o", pch=19, lty=1, col="red",
ylim=c(0,80000), axes=FALSE, ann=FALSE)
#
sovrappone i grafici a linee per le variabili successive
lines(mydata$Europe,
type="o", pch=20, lty=2, col="blue")
lines(mydata$Asia,
type="o", pch=21, lty=3, col="brown")
lines(mydata$S.Amer,
type="o", pch=22, lty=4, col="darkolivegreen")
lines(mydata$Oceania,
type="o", pch=23, lty=5, col="gold1")
lines(mydata$Africa,
type="o", pch=24, lty=6, col="green4")
lines(mydata$Mid.Amer,
type="o", pch=25, lty=7, col="cornflowerblue")
#
#
traccia gli assi con le rispettive scale e riporta le etichette
sull'asse orizzontale
axis(1,
at=1:7, labels=c("1951","1956","1957","1958","1959","1960","1961"))
axis(2,
las=1, at=20000*0:80000)
#
#
riporta titolo ed etichetta dell'asse delle x
title(main="Numero
di apparecchi telefonici nel mondo", col.main="black",
font.main=1)
title(xlab="Anno
della rilevazione", col.lab="black")
#
#
riporta una legenda con i nomi delle variabili e i simboli delle
linee impiegati
legend(5,
70000, c("Nord America", "Europa", "Asia",
"Sud America", "Oceania", "Africa",
"Centro America"), cex=0.8, col=c("red","blue",
"brown", "darkolivegreen", "gold1",
"green4", "cornflowerblue"), pch=19:25, lty=1:7,
bty="y")
#
Nella
prima riga di codice dal set di dati WorldPhones con la
funzione data.frame() viene
creata una tabella (dataframe) che viene assegnata (<-)
all'oggetto mydata, quindi con
mydata sono mostrati i dati
importati:
> mydata # mostra i dati
N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
1951 45939 21574 2876 1815 1646 89 555
1956 60423 29990 4708 2568 2366 1411 733
1957 64721 32510 5230 2695 2526 1546 773
1958 68484 35218 6662 2845 2691 1663 836
1959 71799 37598 6856 3000 2868 1769 911
1960 76036 40341 8220 3145 3054 1905 1008
1961 79831 43173 9053 3338 3224 2005 1076
che
sono rappresentati dalle rilevazioni, effettuate tra l'anno 1951 e
l'anno 1961, del numero di apparecchi telefonici, suddivisi per le
principali aree geografiche del mondo.
Dopo
avere aperto la finestra grafica con windows()
nel successivo blocco di codice viene generato mediante la funzione
plot() il grafico a linee che
riporta in ascisse (x) i descrittori delle righe (1951,
1952, … 1961) e impiega come argomenti:
→ mydata$N.Amer
la prima variabile del set di dati, posta in ordinate (y);
→ type="o"
che consente di sovrascrivere i grafici successivi;
→ pch=19
quale dei simboli dei punti di R deve essere impiegato per i punti da
rappresentare;
→ lty=1
quale degli stili delle linee di R deve essere impiegato per la linea
da rappresentare;
→ col="red"
quale colore impiegare per i punti e le linee da rappresentare;
→ ylim=c(0,80000)
limiti inferiore e superiore dell'asse delle y;
→ axes=FALSE
che indica di non rappresentare gli assi del grafico che verranno poi
configurati manualmente nelle righe successive;
→ ann=FALSE
che indica di non rappresentare titolo ed etichette dell'asse delle x
e delle y che verranno poi configurati manualmente nelle righe
successive.
Al grafico così creato, con
le sei righe di codice successive sono sovrapposti i grafici a linee delle altre sei variabili che vogliamo rappresentare: Europe,
Asia, S.Amer,
Oceania, Africa,
Mid.Amer.
Viene
poi tracciato l'asse delle
x axis(1....)
ponendo nelle posizioni che vanno dalla 1 alla 7 (at=1:7)
le etichette "1951", "1956", "1957", "1958", "1959", "1960", "1961"
riportate nell'argomento labels.
Per l'asse delle ordinate axis(2....)
le tacche sono tracciate in orizzontale (las
= 1)
ogni 20000 (at=20000)
per la scala che va da 0 a 80000 (0:80000).
Titolo
ed etichetta dell'asse delle x riportati nel blocco di codice
successivo non richiedono particolari commenti.
Infine
la funzione legend() consente
di aggiungere una legenda, che prevede i seguenti argomenti:
→ 5,
70000 sono le coordinate x e y alle quali viene
posizionato l'angolo superiore sinistro della legenda;
→ "Nord
America", "Europa", "Asia", "Sud
America", "Oceania", "Africa", "Centro
America" sono i nomi da riportare;
→ cex.axis
= 0.8 specifica la dimensione dei
caratteri da impiegare;
→ "red","blue",
"brown", "darkolivegreen", "gold1",
"green4", "cornflowerblue" sono
i colori di R che ovviamente riprendono nell'ordine quelli delle linee
riportate nel grafico;
→ pch=19:25
sono i simboli dei punti di R impiegati nel grafico;
→ lty=1:7
sono gli stili delle linee di R impiegati nel grafico;
→ bty="y"
che è l'opzione di default della funzione plot()
e consente di tracciare il riquadro contenente la legenda, viene qui
riportato per ricordare che con bty="n"
è possibile eliminarlo.
Da
notare che l'esempio è stato sviluppato esclusivamente per
illustrare le funzioni e gli argomenti per rappresentare un grafico a linee. Ma si fa notare nel set di dati fornito, tra il 1951 e il 1956 intercorrono 5
anni, mentre gli intervalli successivi sono di un anno: questo distorce la rappresentazione, aumentando la pendenza del primo
segmento di retta rispetto al reale. Ovviamente si raccomanda di non
introdurre mai distorsioni di questo o di altro genere nella rappresentazione dei
propri dati.
I grafici a linee vengono spesso impiegati per rappresentare variabili con pochi dati: potrebbe pertanto essere utile disporre di un esempio nel quale i dati sono inseriti manualmente. Copiate e
incollate nella Console di R
questo script e premete ↵
Invio:
#
GRAFICI A LINEE dataframe
costruito manualmente
#
N.Amer
<- c(45939, 60423, 64721, 68484, 71799, 76036, 79831) #
vettore con la prima variabile
Europe
<- c(21574, 29990, 32510, 35218, 37598, 40341, 43173) #
vettore con la seconda variabile
Asia
<- c(2876, 4708, 5230, 6662, 6856, 8220, 9053) #
vettore con la terza variabile
S.Amer
<- c(1815, 2568, 2695, 2845, 3000, 3145, 3338) #
vettore con la quarta variabile
Oceania
<- c(1646, 2366, 2526, 2691, 2868, 3054, 3224) #
vettore con la quinta variabile
Africa
<- c(89, 1411, 1546, 1663, 1769, 1905, 2005) # vettore
con la sesta variabile
Mid.Amer
<- c(555, 733, 773, 836, 911, 1008, 1076) # vettore con
la settima variabile
mydata
<- data.frame(N.Amer, Europe, Asia, S.Amer, Oceania, Africa,
Mid.Amer) # combina i vettori nel dataframe mydata
row.names(mydata)
<- c(1951, 1956, 1957, 1958, 1959, 1960, 1961)
# aggiunge i nomi delle righe
mydata
# mostra i dati
#
windows()
# apre una nuova finestra
#
#
traccia il grafico a linee per la prima variabile
plot(N.Amer,
type="o", pch=19, lty=1, col="red",
ylim=c(0,80000), axes=FALSE, ann=FALSE)
#
sovrappone i grafici a linee per le variabili successive
lines(Europe,
type="o", pch=20, lty=2, col="blue")
lines(Asia,
type="o", pch=21, lty=3, col="brown")
lines(S.Amer,
type="o", pch=22, lty=4, col="darkolivegreen")
lines(Oceania,
type="o", pch=23, lty=5, col="gold1")
lines(Africa,
type="o", pch=24, lty=6, col="green4")
lines(Mid.Amer,
type="o", pch=25, lty=7, col="cornflowerblue")
#
#
traccia gli assi con le rispettive scale e riporta le etichette
sull'asse orizzontale
axis(1,
at=1:7, labels=c("1951", "1956", "1957", "1958", "1959", "1960", "1961"))
axis(2,
las=1, at=20000*0:80000)
#
#
riporta titolo ed etichetta dell'asse delle x
title(main="Numero
di apparecchi telefonici nel mondo", col.main="black",
font.main=1)
title(xlab="Anno
della rilevazione", col.lab="black")
#
#
riporta una legenda con i nomi delle variabili e i simboli delle
linee impiegati
legend(5,
70000, c("Nord America", "Europa", "Asia",
"Sud America", "Oceania", "Africa",
"Centro America"), cex=0.8, col=c("red","blue",
"brown", "darkolivegreen", "gold1",
"green4", "cornflowerblue"), pch=19:25, lty=1:7,
bty="y")
#
Dopo
avere inserito mediante la funzione c()
i valori delle singole variabili, questi sono combinati mediante la
funzione data.frame() nella tabella (dataframe) mydata, alla quale sono
infine aggiunti con la funzione row.names() i nomi delle righe che verranno riportati sull'asse orizzontale del
grafico. Il resto del codice è identico a quello dello script
precedente.
Da
notare come ultima cosa che in quest'ultimo script avendo eseguito la
funzione row.names() si possono
impiegare direttamente i nomi delle variabili (ad esempio N.Amer)
senza eseguire la funzione attach(), mentre nello script precedente, nel quale la funzione attach()
non è stata eseguita, si è reso necessario specificare per le
variabili il nome completo (ad esempio
mydata$N.Amer).
Entrambi
gli script possono essere facilmente riutilizzati, il primo sostituendo al set di dati WorldPhones i propri
dati, organizzati in modo analogo, il secondo adattando opportunamente numero, nomi e valori delle variabili che confluiscono
nell'oggetto mydata.
----------
[1]
Digitate help(plot) nella Console di R per la documentazione della funzione plot() e digitate help(nomedellafunzione) nella
Console di R per la documentazione delle altre funzioni impiegate nello script.
Grazie!!!!!
RispondiEliminaGrazie, mi fa sempre piacere poter essere utile.
RispondiElimina