[R-br] Adicionar linhas em xyplot multipaneis

Fernando Souza nandodesouza em gmail.com
Quarta Outubro 15 18:02:07 BRT 2014


Caros amigos estou criando um gráfico utilizando o pacote látice e a 
função xyplot(). O gráfico é composto de dois paneis um contendo dados 
de temperatura e humidade em função da data do ano. Eu tenho as 
variáveis de temperatura (minima,maxima e média) e humidade relativa 
(minima, maxima e média). Eu fiz os gráficos da temperatura e humidade 
média em função da data e gostaria de adicionar os valores de máximo e 
mínimo dentro dos respectivos paneis. Eu utilizei a função (exemplo) 
panel= panel.lines (x,dados$TEMPMAX) associado a funçao prepanel, no 
entanto o linha de temperatura máxima foi colocada tanto no panel de 
temperatura quanto no panel de humidade relativa.
Fiz uma busca na internet e não encontrei nada que pudesse solucionar 
meu problema. Como eu posso fazer para adicionar as linhas TEMPMAX  e 
TEMPMIN S somente no panel de temperatura e URAMAX E URAMIN somente no 
panel de humidade relativa?

dados<- structure(list(DATA = structure(c(14485, 14486, 14487, 14488,
14489, 14490, 14491, 14492, 14493, 14494, 14495, 14496, 14497,
14498, 14499, 14500, 14501, 14502, 14503, 14504, 14505, 14506,
14507, 14508, 14509, 14510, 14511, 14512, 14513, 14514, 14515,
14516, 14517, 14518, 14519, 14520, 14523, 14524, 14525, 14526,
14527, 14528, 14529, 14530, 14531, 14532, 14533, 14534, 14535,
14536), class = "Date"), TEMPMIN = c(11.85, 11.85, 13.65, 17.9,
18.45, 18.6, 19.6, 19.2, 19.8, 17.8, 18.7, 18.7, 15.5, 15.55,
15.65, 16.4, 18.7, 18.15, 17.55, 17.85, 18.75, 20.95, 19.3, 19.35,
19.4, 18.8, 17.65, 17.75, 16.45, 16.95, 18.4, 21.1, 18.2, 18.05,
18.05, 18.55, 19.95, 20.7, 18.6, 18.6, 16.9, 17.15, 18.6, 20.8,
18.1, 19.85, 19.85, 20.45, 20.4, 19), TEMPMAX = c(28.05, 28.05,
28.3, 30, 30.9, 30.8, 30.35, 31.2, 27.25, 27.9, 31.3, 31.3, 28.6,
28.25, 29.7, 31.05, 31.95, 32.75, 30.7, 31.65, 32.85, 32.65,
33.2, 33.05, 24.7, 24.35, 24.95, 28, 28.15, 30.9, 33.1, 34.95,
26.65, 28.55, 28.55, 32.45, 31.7, 31.4, 23.4, 23.4, 27.95, 28.05,
30.45, 29.6, 31.2, 33.45, 33.45, 30.4, 28.6, 29.95), URAMIN = c(38,
38, 37, 40, 41.5, 43, 42.5, 41, 54, 61.5, 44.5, 44.5, 41.5, 41,
19.5, 19, 18, 19.5, 26.5, 19.5, 19.5, 20, 25.5, 29, 70, 71.5,
42.5, 50, 44, 31, 23, 15.65, 46.5, 46, 46, 32.5, 27, 31.5, 76,
76, 44.5, 44, 36.5, 45.5, 34, 25.5, 25.5, 49.5, 55.5, 52.5),
     URAMAX = c(89, 89, 89, 94, 91, 91, 96.5, 94.5, 99, 99, 95.5,
     95.5, 91, 93, 80.5, 76.5, 74.5, 74.5, 75.5, 77, 76, 80, 88,
     92, 94, 93.5, 94, 91.5, 85.5, 83.5, 79, 51.75, 77.5, 81,
     81, 91.5, 86.5, 88.5, 92.5, 92.5, 84, 85, 82, 86, 80, 90,
     90, 95, 90.5, 97), TEMPMED = c(19.95, 19.95, 20.975, 23.95,
     24.675, 24.7, 24.975, 25.2, 23.525, 22.85, 25, 25, 22.05,
     21.9, 22.675, 23.725, 25.325, 25.45, 24.125, 24.75, 25.8,
     26.8, 26.25, 26.2, 22.05, 21.575, 21.3, 22.875, 22.3, 23.925,
     25.75, 28.025, 22.425, 23.3, 23.3, 25.5, 25.825, 26.05, 21,
     21, 22.425, 22.6, 24.525, 25.2, 24.65, 26.65, 26.65, 25.425,
     24.5, 24.475), URAMED = c(63.5, 63.5, 63, 67, 66.25, 67,
     69.5, 67.75, 76.5, 80.25, 70, 70, 66.25, 67, 50, 47.75, 46.25,
     47, 51, 48.25, 47.75, 50, 56.75, 60.5, 82, 82.5, 68.25, 70.75,
     64.75, 57.25, 51, 33.7, 62, 63.5, 63.5, 62, 56.75, 60, 84.25,
     84.25, 64.25, 64.5, 59.25, 65.75, 57, 57.75, 57.75, 72.25,
     73, 74.75), ITH = c(65.88425, 65.88425, 67.355125, 71.62425,
     72.664625, 72.7005, 73.095125, 73.418, 71.014375, 70.04575,
     73.131, 73.131, 68.89775, 68.6825, 69.794625, 71.301375,
     73.597375, 73.77675, 71.875375, 72.77225, 74.279, 75.714,
     74.92475, 74.853, 68.89775, 68.216125, 67.8215, 70.081625,
     69.2565, 71.588375, 74.20725, 77.471875, 69.435875, 70.6915,
     70.6915, 73.8485, 74.314875, 74.63775, 67.391, 67.391, 69.435875,
     69.687, 72.449375, 73.418, 72.62875, 75.49875, 75.49875,
     73.740875, 72.4135, 72.377625)), .Names = c("DATA", "TEMPMIN",
"TEMPMAX", "URAMIN", "URAMAX", "TEMPMED", "URAMED", "ITH"), row.names = 
c(NA,
50L), class = "data.frame")


library(lattice)

#-ítulo dos gráficos
humidade <- "Relative Humidity (%)"
temperatura <- as.expression(expression( paste("Average Air 
Temperature(", degree*C, ")") ))
#--Personalização do cabeçario dos gráficos
# (NB the colour used is the default lattice strip background colour)
my.strip <- function(which.given, which.panel, ...) {
    strip.labels <- c(temperatura,humidade)
    panel.rect(0,0, 1, 1, col="gray95", border=1)
    panel.text(x=0.5, y=0.5, adj=c(0.5, 0.55), cex=0.95,
               lab=strip.labels[which.panel[which.given]])
}

#--Intervalo do eixo X
xlim <- range(as.Date(dados$DATA,format="%d/%m/%y",tz="UTC"))

#--marcadores para as linhas grid
d <- seq(from=as.Date("2009-08-29"), to=as.Date("2009-12-04"), by=365/4)

#--Definição das cores das linhas
col.raw <- "gray0"    #colset[2] } see note above
col.smo <-"gray80"    #colset[1] }
col.lm <- "grey20"

#--Criação dos gráficos
xyplot(TEMPMED +URAMED ~DATA, data=dados,
        scales=list(y="free", rot=0), xlim=xlim,
        strip=my.strip, outer=TRUE, layout=c(1, 2, 1), ylab="",xlab=NULL,
        panel=function(x, y, ...) {
                             panel.fill(col ="gray100") #define a cor de 
fundo do panel
                             panel.xyplot(x, y, ..., type="l", 
col=col.raw, lwd=1.0) # x~y
                             panel.loess(x, y, ..., col=col.smo, 
span=0.14, lwd=1) # smoothed data
                             panel.grid(h=-1,v=-1)

                             },

        key=list(text=list(c("raw data", "smoothed curve")),
                 col=c(col.raw, col.smo), lty=c(1, 1),
                 columns=2, cex=0.95,
                 lines=TRUE
                ),
       )



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