[R-br] Suavização do gráfico

Thiago V. dos Santos thi_veloso em yahoo.com.br
Sábado Abril 8 21:44:58 BRT 2017


O problema é que o comando aggregate, como está escrito no código, não está fazendo nada.

Nesses casos de médias com séries temporais de alta resolução, uma solução rápida e legível é criar fatores na frequência desejada. Veja o exemplo abaixo, onde eu crio fatores horários:


mydata <- read.csv("Downloads/dado.txt", header=T, sep=",", na.strings='NA', as.is=T)
mydata$direta <- as.numeric(mydata$direta)
mydata$date <- as.POSIXct(strptime(mydata$date, format="%d/%m/%Y %H:%M:%S", tz="Etc/GMT-1"))

# Primeiro, crie fatores com as horas
# com esse comando, tudo o que estiver dentro de seis horas vai receber o label 06:00,
# tudo o que estiver dentro das sete horas vai receber o label 07:00 e assim por diante
mydata$hfac <- droplevels(cut(mydata$date, breaks='hour'))

# Confere como ficou
mydata[50:70,] # repare a transicao dos fatores nas linhas 60 e 61

# Em seguida, tira a media os dados usando o fator recem-criado
mydata.h <- aggregate(direta ~ hfac, data=mydata, FUN=mean, na.rm=TRUE, na.action=na.pass)

# Conserta a data (converte de fator para data)
mydata.h$hfac <- as.POSIXct(mydata.h$hfac)

# Plota somente o primeiro dia
plot(mydata.h$hfac[1:13], mydata.h$direta[1:13], type = "l", col="red",xlab = "hour", ylab = "Direct Solar Radiation (W/m²)")

# Plota a serie toda
plot(mydata.h$hfac, mydata.h$direta, type = "l", col="red",xlab = "date", ylab = "Direct Solar Radiation (W/m²)")


 
Greetings,
 -- Thiago V. dos Santos

PhD student
Land and Atmospheric Science
University of Minnesota


On Friday, April 7, 2017 10:14 AM, Mateus Dias Nunes via R-br <r-br em listas.c3sl.ufpr.br> wrote:



Bom dia,

Eu estou com um problema para suavizar meu gráfico. Eu tenho dados horários e desejo plotar individualmente cada data (no período das 06h as 18h). Entretanto o gráfico tem ficado com muito ruído devido as observações serem horárias e existirem falhas (NA) nas observações. E por isso eu gostaria de suavizar o gráfico com as médias horárias, porém não estou conseguindo implementar isso.

Espero que alguém possa me ajudar a resolver.

dado utilizado: 
https://www.dropbox.com/s/b80zzzeaesnh8qp/dado.txt?dl=0



library(openair)

 mydata<-read.table("dado.txt", h = T, sep = ",")
 mydata$direta <- as.numeric(as.character(mydata$direta))
 mydata$date <- as.POSIXct(strptime(mydata$date, format = "%d/%m/%Y %H:%M:%S",tz = "Etc/GMT-1"))

means <- aggregate(mydata["direta"], format(mydata["date"],"%d-%m-%Y %H:%M:%S"), mean, na.rm = TRUE)
means[ ,"date"] <- seq(min(mydata[ , "date"]), max(mydata[ , "date"]), length = nrow(means))


Figura1<-plot(mydata$date[2:721], mydata$direta[2:721], type = "l", col="red",xlab = "minutes",main = "01 de Janeiro de 2007", ylab = "Direct Solar Radiation (W/m²)")
Figura1
dev.copy(device=jpeg,filename="Brasilia_01dejaneiro2007.jpg", width = 800, height = 500) 
dev.off ()

desde já, agradeço.

_______________________________________________________________________________________
MATEUS DIAS NUNES

Postgraduate Program in Meteorology - PGMET - CPTEC / INPE
Center for Weather Forecasting and Climate Studies / National Institute for Space ResearchCachoeira Paulista - SP - Brasil
FONE: +55 (53) 98112-5154    
SKYPE: omsndomateus em hotmail.com      

_______________________________________________________________________________________



   Sent with Mailtrack  _______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.


Mais detalhes sobre a lista de discussão R-br