如何使用ggplot2标记带有正负条的条形图条

Dom*_*nik 28 r ggplot2

我正在尝试使用带有正负条的ggplot2绘制标记的条形图. 到目前为止,这是有效的,但我想在标签之外设置标签,使其位于条形图的上方或下方.我试图设置在调节vjust = c(x1,...,xn)其中x是根据在栏的值的正的或负的值geom_text().这不起作用.我刚收到错误消息错误:" 设置美学时,它们可能只取一个值.问题:vjust"

使用正常的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)
Run Code Online (Sandbox Code Playgroud)

所以看起来这很好...... ;-)

有人有什么建议吗?

谢谢你的帮助.

Luc*_*zer 46

这样就可以了

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())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我可能会使用-0.1和1.1而不是0和1来表示`ifelse`中的值,但这只是为了将数字从条形推进一点.这个概念是正确的. (8认同)