2010-07-10 5 views
10

Ich möchte die Werte eines 100% -Balkens für jeden Teil davon anzeigen. Leider weiß ich nicht, wie es geht. Der Graph sollte wegen der Legendenposition im Gitter sein (ich habe es mit ggplot2 versucht, aber Sie können die Legende nicht in einer Zeile anzeigen). Ich freue mich über Vorschläge oder Ideen.Anzeigewerte in gestapeltem Gitter-Balkendiagramm

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)) 

Antwort

18

Dies wird dadurch erreicht eine eigene Panel-Funktion:

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

Vielen Dank! Es war eine große Hilfe für mich! – SebastianW