Legenda e contornos em gráficos de nível
Mais uma ridícula de lattice
. Fiz duas coisas: adicionei rótulo à legenda de cores (colorkey) e coloquei contornos sobre o gráfico de níveis. Assim como a maioria das dicas gráficas, essa também é baseada nas mensagens da r-help. Os respectivos links estão no CMR. Até a próxima ridícula.
#----------------------------------------------------------------------------- # leitura dos dados soja <- read.table("http://www.leg.ufpr.br/~walmes/cursoR/cnpaf/soja.txt", header=TRUE, sep="\t", dec=",") str(soja) #----------------------------------------------------------------------------- # ver o peso de 100 grãos require(lattice) xyplot(pesograo~potassio, groups=agua, data=soja, type=c("p","a")) xyplot(pesograo~potassio|agua, data=soja, type=c("p","a")) #----------------------------------------------------------------------------- # ajuste de um modelo polinomial nos dois fatores m0 <- lm(pesograo~bloco+poly(agua,2)*poly(potassio,2), data=soja) par(mfrow=c(2,2)); plot(m0); layout(1) summary(influence.measures(m0)) soja[55,] # influente segundo dffits m0 <- lm(pesograo~bloco+poly(agua,2)*poly(potassio,2), data=soja[-55,]) par(mfrow=c(2,2)); plot(m0); layout(1) anova(m0) summary(m0) m1 <- lm(pesograo~bloco+(agua+I(agua^2))*potassio+I(potassio^2), data=soja[-55,]) par(mfrow=c(2,2)); plot(m1); layout(1) anova(m0, m1) summary(m1) #----------------------------------------------------------------------------- # fazendo a predição pred <- expand.grid(bloco="I", agua=seq(37.5,62.5,l=30), potassio=seq(0,180,l=30)) pred$y <- predict(m1, newdata=pred) #----------------------------------------------------------------------------- # representando com wireframe() require(RColorBrewer) display.brewer.all() colr <- brewer.pal(11, "RdYlGn") colr <- colorRampPalette(colr, space="rgb") zlab <- "Peso de 100 grãos" xlab <- "Potássio no solo" ylab <- "Nível de saturação de água" wireframe(y~potassio*agua, data=pred, scales=list(arrows=FALSE), zlab=list(zlab, rot=90), xlab=list(xlab, rot=24), ylab=list(ylab, rot=-37), col.regions=colr(100), drape=TRUE, screen=list(z=40, x=-70)) #----------------------------------------------------------------------------- # representando em um levelplot() # grid mais fino pred <- expand.grid(bloco="I", agua=seq(37.5,62.5,l=100), potassio=seq(0,180,l=100)) pred$y <- predict(m1, newdata=pred) levelplot(y~potassio*agua, data=pred, col.regions=colr(100), xlab=xlab, ylab=ylab) #----------------------------------------------------------------------------- # adicionando rotulo à legenda de cores, baseado nas mensagens da r-help # http://r.789695.n4.nabble.com/Adding-title-to-colorkey-td4633584.html library(grid) # modo 1 levelplot(y~potassio*agua, data=pred, col.regions=colr(100), xlab=xlab, ylab=ylab, par.settings=list(layout.widths=list(axis.key.padding=4))) grid.text(zlab, x=unit(0.88, "npc"), y=unit(0.5, "npc"), rot=90) # modo 2 levelplot(y~potassio*agua, data=pred, col.regions=colr(100), xlab=xlab, ylab=ylab, ylab.right=zlab, par.settings=list( layout.widths=list(axis.key.padding=0, ylab.right=2))) require(latticeExtra) # modo 3 p <- levelplot(y~potassio*agua, data=pred, col.regions=colr(100), xlab=xlab, ylab=ylab, par.settings=list( layout.widths=list(right.padding=4))) p$legend$right <- list(fun=mergedTrellisLegendGrob(p$legend$right, list(fun=textGrob, args=list(zlab, rot=-90, x=2)), vertical=FALSE)) print(p) #----------------------------------------------------------------------------- # adicionando contornos, baseado em # https://stat.ethz.ch/pipermail/r-help/2006-February/088166.html #png(file="f037.png", width=500, height=400) p <- levelplot(y~potassio*agua, data=pred, col.regions=colr(100), xlab=xlab, ylab=ylab, panel=function(..., at, contour=FALSE, labels=NULL){ panel.levelplot(..., at=at, contour=contour, labels=labels) panel.contourplot(..., at=at, contour=TRUE, labels=list(labels=format(at, digits=4), cex=0.9)) }, par.settings=list( layout.widths=list(right.padding=4))) p$legend$right <- list(fun=mergedTrellisLegendGrob(p$legend$right, list(fun=textGrob, args=list(zlab, rot=-90, x=2)), vertical=FALSE)) print(p) #dev.off() #-----------------------------------------------------------------------------
Comentários (0)
Trackbacks (0)
Deixe um comentário
Trackback