Come anticipato qui, oggi iniziamo a scrivere qualche riga di codice (ricordiamo, stiamo utilizzando R) per creare i nostri grafici personalizzati, in questo caso partiamo dalle anomalie termiche così come vengono misurate da RSS e UAH. In questa prima parte vedremo passo passo come ottenere i grafici, in futuro andremo più spediti, in quanto non è nostro obiettivo creare dei tutorial online sull’utilizzo di R (fatto salvo che rimaniamo a disposizione per ogni eventuale chiarimento).
Carichiamo il file relativo alle anomalie termiche elaborate da RSS:
data_rss<-scan("http://www.climatemonitor.it/Download/RSS.csv")
Vi ricordo che è sufficiente eseguire un copia/incolla all'interno della shell di R, inoltre il file che mettiamo a vostra disposizione non è il file originale rilasciato da RSS, bensì una elaborazione (i dati non sono stati alterati, semplicemente il file è stato "ripulito" da tutte le informazioni non utili ai fini della rappresentazione grafica).
Cosa abbiamo fatto con questo comando? Abbiamo caricato il file RSS.csv all'interno del vettore data_rss. Quello che vogliamo ottenere è una serie storica, quindi dobbiamo utilizzare la libreria tseries, precedentemente installata.
library(tseries)
A questo punto trasformiamo il nostro vettore data_rss in una serie storica, la chiameremo RSS:
RSS<-ts(data_rss,start=1979,frequency=12)
Il comando ts trasforma il vettore data_rss (i dati da noi caricati sul nostro computer) in una serie storica con inizio 1/1979 e con frequenza mensile.
Digitiamo RSS e premiamo invio, in questo modo richiamiamo la serie storica, in modalità testuale, ecco le prime righe di risultato:
> rss
[1] -0.227 -0.125 -0.139 -0.265 -0.227 -0.201 -0.045 -0.159 -0.008 0.131
[11] 0.035 0.058 0.010 0.087 -0.040 0.037 0.094 0.136 -0.010 0.018
[21] 0.049 0.047 -0.166 -0.082 0.198 0.202 -0.029 0.078 0.007 -0.061
(...)
Il numero di dati visualizzati in ogni riga, ovviamente dipende dalla ampiezza del vostro monitor.
A questo punto ripetiamo tutto il procedimento per la serie di dati UAH:
data_uah<-scan("http://www.climatemonitor.it/Download/UAH.csv")
Create la serie storica utilizzando i passaggi visti per la serie RSS, e chiamate la serie storica UAH
A questo punto, tutti noi dovremmo avere due serie di dati: RSS e UAH. E' venuto il momento di visualizzarle entrambe, sotto forma di grafico.
op <- par(mfrow=c(2,1))
plot(RSS,type="l",ylab="°C",xlab="",main="Anomalie termiche - RSS")
plot(UAH,type="l",ylab="°C",xlab="Anno", main="Anomalie termiche - UAH")
par(op)
Una volta premuto invio, si aprirà una nuova finestra con il grafico appena elaborato, ecco il risultato:
Se preferite una vista più smussata, possiamo applicare un filtro (avremo modo di parlare dei filtri più avanti, per il momento applichiamo questo semplice, ma efficace, smussatore).
y[i] = x[i] + f[1]*y[i-1] + ... + f[p]*y[i-p]
Volendo potremmo anche applicare una media mobile (to do!)
plot(RSS,ylab="°C",xlab="Anno",main="Anomalie termiche - RSS (k=12)")
k<-12
lines(filter(RSS,rep(1/k,k)),col="red",lwd=3)
Per il momento è tutto, prossimamente completeremo le fonti di dati scaricabili da Climate Monitor, e cominceremo ad effettuare qualche analisi di tipo statistico.
Molto interessante il problema del filtraggio e come l’hai risolto.
Aggiungo che per inserire una retta orizzontale in un grafico già visualizzato, usando sempre il comando abline(), si può usare anche questo codice:
abline(h=0, lwd=2, col=”orange”)
Mentre per ottenere delle rette verticali, si scrive:
abline(v=0, lwd=2, col=”orange”)
Io lo uso generalmente per creare delle griglie (anche se la library ggplot2 è più comoda x questo) nei grafici come ad esempio (quadrati pari alle unità ):
abline(h=0:30, col=”grey”)
abline(v=-15:15, col=”grey”)
Ok, Fatto!
Grazie Claudio!
Alla prossima analisi!
Ciao Lucas, non diamo mai nulla per scontato, siamo qui tutti quanti per scoprire insieme le potenzialità di R. La svista è stata mia, in effetti in un grafico con anomalie è di fondamentale importanza inserire una retta base. Il linguaggio R ci viene incontro con abline che ci consente di disegnare rette alle coordinate da noi scelte (in effetti ci consente di disegnare anche rette di regressione, ma questo magari lo vedremo più avanti). Una volta inseriti i comandi così come indicato nell’articolo qui sopra, aggiungete questa linea:
abline(a=0,b=0,lwd=2,col=”blue”)
in questo modo R disegnerà una retta orizzontale per l’intercetta 0.
Qui trovate il manuale online.
Bel lavoro Claudio!
mi chiedevo se fosse possibile, sicuramente si, inserire una retta in corrispondenza di anomalia zero….ma come si fa?
Devo specificare nel grafico la retta ma non riesco a capire la si fa! premetto però che non sono uno smanettone del pc…quindi è probabile che questa perplessità possa risultare ovvia ad altri!
Ciao
In plot(RSS,type=â€lâ€,ylab=â€Â°Câ€,xlab=—,main=â€Anomalie termiche – RSSâ€), ho volutamente lasciato xlab=”” vuoto, per questioni di impaginazione, dal momento che l’etichetta dell’asse x è indicata nel grafico sottostante.
La sequenza op<-par(mfrow=c(r,c)) (…) par(op) è molto importante, e la utilizzeremo spesso per creare dei panel di grafici.
C.Gravina
Molto molto interessante. Ci sono alcuni punti che non mi erano chiari e sono andato a guardarmi la documentazione. Riporto qui sotto quello che ho trovato qualora dovesse interessare ad altri.
op <- par(mfrow=c(2,1))
Digitando ?mfrow al prompt di R leggo l’help di questo comando e mi pare di capire che semplicemente è la definizione di una griglia di una colonna per due righe per ospitare i due grafici.
plot(RSS,type=”l”,ylab=”°C”,xlab=””,main=”Anomalie termiche – RSS”)
Il comando plot si aspetta: coordinate x,y oppure un oggetto di R che supporti il metodo plot. L’oggetto RSS (creato con la funzione ts) immagino supporti questo metodo.
type=l significa grafico a linea
xlab e main impostano rispettivamente un titolo vuoto per l’asse x e il titolo del grafico
ciao
Rodolfo