2012-08-13 20 views
19

Ggplot2 ile etiketli bir barkodu pozitif ve negatif çubuklarla çizmeye çalışıyorum. Şimdiye kadar çalışıyor, ancak etiketi çubuğun dışında, yani çubuğun üstünde veya altında olacak şekilde ayarlamak istiyorum. vjust = c(x1,...,xn)'da xgeom_text()'daki çubuğun değerine göre pozitif veya negatif bir değer ayarlamayı denedim. Bu işe yaramıyor. Hata İletisi Hatası: "ayarı estetiği ayarlandığında, yalnızca bir değer alabilirler. Sorunlar: vjust"Ggplot2 ile pozitif ve negatif çubuklarla bir barplot çubuğu nasıl etiketlenir

Çalışmakta olan normal çizim komutuyla. Ben ggplot2 bu komutu çoğaltmak istiyorum:

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) 

o yüzden ;-)

birisi tavsiyesi olan var mı ... sadece güzel böyle mi görünüyor?

Yardımlarınız için teşekkürler.

cevap

34

Bu `ifelse` içindeki kandırmasına değerleri için

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 Güzel – Andrie

+4

ifelse' muhtemelen -0.1 kullanmayı tercih ediyorum' kullanımı ve 1.1 yerine 0 ve 1 yapar Ama bu sadece sayıları barlardan biraz daha ileriye doğru itmek. Konsept doğru. –

+0

Bu benim problemimi çözdü! Çok teşekkürler dostum! – Dominik

İlgili konular