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

Gráficos de densidade com regiões destacando os quartis.
Gráficos de densidade são utilizados para se conhecer a forma da distribuição dos dados. A função lattice::densityplot() faz esse tipo de gráfico. Para aprimorar a visualização dos quartis dos dados, eu implementei uma função (my.densityplot()) para que destaque com regiões coloridas as porções de dados delimitadas pelos quartis. O código abaixo gera a figura no início desse post. Até a próxima ridícula.
#-----------------------------------------------------------------------------
# densityplot() com regiões pintadas delimitadas pelos quantis
require(lattice)
my.densityplot <- function(x, cols="gray90", probs=c(1,3)/4, ...){
panel.densityplot(x, ...)
dx <- density(x)
breaks <- sort(c(range(dx$x), quantile(x, probs=probs)))
fx <- approxfun(dx$x, dx$y)
do.polygon <- function(x){
y <- fx(x)
return(list(x=c(min(x), x, max(x)), y=c(0, y, 0)))
}
seqs <- lapply(1:(length(breaks)-1),
function(i){
x <- seq(breaks[i], breaks[i+1], l=20)
do.polygon(x)
})
for(i in 1:length(seqs)){
seqs[[i]]$col <- cols[i]
}
lapply(seqs, function(i) do.call(panel.polygon, i))
panel.mathdensity(dmath=dnorm, col="black",
args=list(mean=mean(x),sd=sd(x)), lty=3)
}
require(RColorBrewer)
display.brewer.all()
cols <- brewer.pal(3, "BuPu") # Greens, Blues, BuPu, Reds
densityplot(~height|voice.part, data=singer,
cols=cols, plot.points="rug", panel=my.densityplot)
#png("f036.png", width=500, height=320)
cols <- brewer.pal(4, "Greens") # Greens, Blues, BuPu, Reds
densityplot(~height|voice.part, data=singer, layout=c(4,2),
strip=strip.custom(bg="gray90"),
xlab="Altura", ylab="Densidade", col=1,
cols=cols, probs=1:3/4, plot.points="rug", panel=my.densityplot)
#dev.off()
#-----------------------------------------------------------------------------