2012-08-13 3 views
19

ggplot2로 양수와 음수 바를 사용하여 레이블이있는 바 plot을 플롯하려고합니다. 그건 지금까지 작동하지만 바의 위 또는 아래에 있도록 바 외부에 레이블을 설정하고 싶습니다. vjust = c(x1,...,xn)에 조정을 설정하려고 시도했습니다. 여기에서 x은 막대의 값에 따라 양수 또는 음수 값이고 geom_text()입니다. 이것은 작동하지 않습니다. 문제 : vjust "ggplot2로 바브 바 막대에 라벨을 붙이는 방법

정상적인 plot 명령을 사용하면 오류 메시지가 나타납니다."오류 메시지가 나타납니다. 오류 : "설정시을 사용하면 문제가 해결되지 않습니다. 나는 ggplot2에서이 명령을 복제 할 :

xpos <- barplot(d, col=mycols, main='Verteilung in Dresden 2004', 
     ylab='Anteil in %', xlab='Milieu', names.arg=l, 
     cex.axis=0.7, cex.names=0.7, ylim=c(0,max(d)+0.05)) 
boxed.labels(xpos,d+0.02,sprintf('%d%s', d*100, '%'), 
      bg='transparent', border=FALSE, cex=0.7) 

있도록이 ;-)

사람이 어떤 제안이 있습니까 ... 단지 좋은에서 다음과 같습니다?

모두에게 감사드립니다.

답변

34

이것은`ifelse` 내부의 트릭에게 값

library(plyr) 
library(ggplot2) 
library(scales) 
dtf <- data.frame(x = c("ETB", "PMA", "PER", "KON", "TRA", 
        "DDR", "BUM", "MAT", "HED", "EXP"), 
        y = c(.02, .11, -.01, -.03, -.03, .02, .1, -.01, -.02, 0.06)) 
ggplot(dtf, aes(x, y)) + 
    geom_bar(stat = "identity", aes(fill = x), legend = FALSE) + 
    geom_text(aes(label = paste(y * 100, "%"), 
       vjust = ifelse(y >= 0, 0, 1))) + 
    scale_y_continuous("Anteil in Prozent", labels = percent_format()) + 
    opts(axis.title.x = theme_blank()) 

enter image description here

+1

+1 니스 – Andrie

+4

ifelse' 아마 -0.1을 사용하는 것 '의 사용과 1.1 대신에 0과 1을한다 , 그것은 바에서 조금 더 멀리 밀어내는 것입니다. 개념은 바로 위에있다. –

+0

그건 내 문제를 해결! 고마워요! – Dominik

관련 문제