2010-07-12 1 views
1

격자에 barchart를 커스터마이징하는 것과 관련하여 두 가지 질문이 있습니다. 나는 barchart에 레이블을 추가하려고 시도했지만 각각 크기를 편집하지만 내 코드는 작동하지 않습니다. 내가 뭘 잘못하고있어? "%"를 포함한 일부 값이 있어야합니다.격자에 선과 라벨 추가하기 [R]

두 번째 질문은 막대 뒤에있는 그림 영역의 위쪽과 아래쪽에서 선을 그릴 수 있으며 인쇄 된 축척 값에 위치하는 방법입니다. 어떤 제안이나 도움을 주셔서 감사합니다, Sebastian.

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") 
data.p <- prop.table(postdoc, margin=1) 
data <- data.p * 100 
pl <- barchart(data, 
      par.settings = colorset,          
      box.ratio = 1,             
      xlab = " ",             
      panel = function(...) { # Code for panel function by rcs (http://stackoverflow.com/questions/3220702/display-values-in-stacked-lattice-barchart-r) - thank you very much! 
      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("%.0f", df$x),      
         cex=0.7, col="white") 
      panel.axis(side = c("bottom"), 
         at = list(0, 20, 50, 75, 100), 
         labels = list("0%", "25%", "50%", "75%", "100%"), 
         ticks = TRUE)  
      }, 
      auto.key=list(columns=5, space="bottom",       
         cex=0.8, size=1.4, adj=1, 
         between=0.2, between.colums=0.1, 
         size = 1.3, points = FALSE, rectangles = TRUE)) 

답변

3

질문 1 : 여기

코드입니다 나를 위해 다음 작품 ( half=FALSE)

panel.axis(side=c("bottom"), 
      at=c(0, 25, 50, 75, 100), 
      labels=c("0%", "25%", "50%", "75%", "100%"), 
      rot=0, half=FALSE, ticks=TRUE) 

질문 2 :에 panel.barchart() 전에 panel.grid (또는 panel.abline)에 호출을 추가하여 패널 기능 :

panel.grid(h=FALSE, v=-1) 
+0

정말 고마워요! panel.abline은 그래픽 매개 변수를 편집 할 수있는 가능성이 더 많기 때문에 사용했습니다. panel.axis 대신에 라벨이 플롯 영역 외부에 있어야하고 클립 및 뷰포트에 약간의 문제가있어서 마침내 scale 인수를 사용하는 것이 좋습니다. 당신의 도움은 제가 그래프를 끝내고 격자에 대해 더 중요하게 강조하는 데 매우 중요했습니다. 다시 한 번 감사드립니다! – SebastianW