2010-07-10 9 views
10

Quiero mostrar los valores de una barra de 100% para cada parte de la misma. Lamentablemente, no sé cómo hacerlo. El gráfico debe estar en celosía debido a la posición de la leyenda (lo probé con ggplot2, pero no se puede mostrar la leyenda en una fila). Estoy satisfecho con cualquier sugerencia o idea.mostrar valores en la cuadrícula de celosía apilada

library(lattice) 
data(postdoc, package = "latticeExtra") 
colnames(postdoc) <- c("Legendtext 1", "2", "3", "4", "5") 
colorset <- simpleTheme(col = c(rgb(166,27,30,maxColorValue = 255), 
           rgb(192,80,77,maxColorValue = 255), 
           rgb(24,65,83,maxColorValue = 255), 
           rgb(60,143,167,maxColorValue = 255), 
           rgb(130,184,208,maxColorValue = 255)), 
           border = "white") 
pl <- barchart(prop.table(postdoc, margin = 1), 
       par.settings = colorset, 
       auto.key = list(columns = 5, space = "bottom", 
           cex = 0.8, size = 1.4, between = 0.2, 
           between.columns = 0.1, adj = 1)) 

Respuesta

18

Esto se consigue utilizando una función del panel personalizado:

library(lattice) 
library(plyr) 

data(postdoc, package="latticeExtra") 
colnames(postdoc) <- c("Legendtext 1", "2", "3", "4", "5") 
colors <- c(rgb(166,27,30,maxColorValue = 255), 
      rgb(192,80,77,maxColorValue = 255), 
      rgb(24,65,83,maxColorValue = 255), 
      rgb(60,143,167,maxColorValue = 255), 
      rgb(130,184,208,maxColorValue = 255)) 
colorset <- simpleTheme(col=colors, 
         border="white") 

pl <- barchart(prop.table(postdoc, margin=1), 
       par.settings=colorset, 
       panel=function(...) { 
       panel.barchart(...) 
       tmp <- list(...) 
       tmp <- data.frame(x=tmp$x, y=tmp$y) 
       # calculate positions of text labels 
       df <- ddply(tmp, .(y), 
          function(x) { 
           data.frame(x, pos=cumsum(x$x)-x$x/2) 
          }) 
       panel.text(x=df$pos, y=df$y, 
          label=sprintf("%.02f", df$x), 
          cex=0.7) 
       }, 
       auto.key=list(columns=5, space="bottom", 
          cex=0.8, size=1.4, adj=1, 
          between=0.2, between.colums=0.1)) 

lattice plot http://img819.imageshack.us/img819/894/panelbarchart.png

+0

Muchas gracias! ¡Fue una gran ayuda para mí! – SebastianW

Cuestiones relacionadas