Descripción
Esta función sirve para graficar datos del tipo ts
(time series).
Modo de uso
graf_ts(s,animate=T)
Argumentos
Argumentos | Descripcion |
---|---|
s | Objeto del tipo ts (time series) |
animate | Indicador de si se quiere una gráfica animada (TRUE o T) o una sencilla (FALSE o F) |
Librerías requeridas
library(ggplot2)
library(plotly)
library(lubridate)
Función
graf_ts<- function(s, animate= T ){
if(is.ts(s)==F)stop('serie no es un objeto del tipo ts')
#Primero sacamos el vector de fechas
if(frequency(s)==4){
inicio<- paste(start(s)[1],((start(s)[2]-1)*3+1),1,sep="/") %>% ymd()
termino<- paste(end(s)[1],((end(s)[2]-1)*3+1),1,sep="/") %>% ymd()
}
if(frequency(s)==6){
inicio<- paste(start(s)[1],((start(s)[2]-1)*2+1),1,sep="/") %>% ymd()
termino<- paste(end(s)[1],((end(s)[2]-1)*2+1),1,sep="/") %>% ymd()
}
inicio<- paste(start(s)[1],start(s)[2],1,sep="/") %>% ymd()
termino<- paste(end(s)[1],end(s)[2],1,sep="/") %>% ymd()
if(frequency(s)==1){
tiempo <- seq.Date(from = inicio,to=termino,by="year")
}else if(frequency(s)==12){
tiempo <- seq.Date(from = inicio,to=termino,by="month")
}else if(frequency(s)==4){
tiempo <- seq.Date(from = inicio,to=termino,by="quarter")
}else if(frequency(s)==6){
tiempo <- seq.Date(from = inicio,to=termino,by="2 month")
}else stop('no se pueden graficar series de tiempo con frecuencias diferentes a anual, mensual, bimestral o trimestral')
#Luego se saca la serie
serie <- as.vector(s)
#Luego se hace un data frame para trabajar con ggplot
df <- data.frame(tiempo,serie)
#luego se hace la grafica
if(animate){
ggplotly( ggplot(df,aes(tiempo,serie)) + geom_line(color="blue")+ labs(y="Observaciones", x="Tiempo")+
ggtitle("Serie de tiempo") + theme_minimal())
}else{
ggplot(df,aes(tiempo,serie)) + geom_line(color="green")+ labs(y="Observaciones", x="Tiempo")+
ggtitle("Serie de tiempo") + theme_minimal()
}
}
Detalles
Esta graficadora está pensada para años y frecuencias anuales, mensuales, bimestrales y trimestrales. Sin embargo se puede generalizar a más formatos con otros if’s en los casos de la fecha de inicio.
Ejemplos
library(readr)
library(tidyr)
library(dplyr)
library(readxl)
library(stringr)
El primer ejemplo es una serie extraída de una base de datos proporcionada en clase. Este gráfico será interactivo usando la paquetería plotly
.
series <- read_excel("MC1001.xls")
source("functions.R")
serie_random1<-get_series()
graf_ts(serie_random1)
El segundo ejemplo es otra serie random pero sencilla, en caso de que quiera usarse en algún documento como PDF o Word.
serie_random2<-get_series()
graf_ts(serie_random2,animate = F)
El tercer ejemplo es una serie de tiempo precargada en la base de R
x<-AirPassengers
graf_ts(x)