| This post was kindly contributed by Ridículas - go there to comment and to read the full post. |

Peso de 100 grãos em função do nível de saturação de água e potássio. Contornos e rótulo na escala de cores são os destaques desse gráfico.
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()
#-----------------------------------------------------------------------------