Suavização do gráfico

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 Research Cachoeira Paulista - SP - Brasil FONE: +55 (53) 98112-5154 SKYPE: omsndomateus@hotmail.com ____________________________________________ ___________________________________________ <https://mailtrack.io/> Sent with Mailtrack <https://mailtrack.io/install?source=signature&lang=en&referral=nunes.mateusdias@gmail.com&idSignature=22> <#>

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@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@hotmail.com _______________________________________________________________________________________ Sent with Mailtrack _______________________________________________ R-br mailing list R-br@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.
participantes (2)
-
Mateus Dias Nunes
-
Thiago V. dos Santos