ggplot栏中隐藏的负标签:geom_bar

时间:2012-12-16 06:00:49

标签: r ggplot2

这是一个扩展问题:How to put labels over geom_bar for each bar in R with ggplot2

我的数据有一些底片,因此标签会侵入栏中。我该怎么调整呢?我需要动态阅读标签展示位置。

谢谢!

growth<-data.frame(ElapsedTimeMonths=c(3,6,12,24),MedianGrowth=c(-0.011,-0.002,0.014,0.052))
g<-ggplot(growth, aes(x=factor(ElapsedTimeMonths),y=MedianGrowth))
g<-g+geom_bar(position="dodge", stat="identity")
g<-g+scale_y_continuous(labels = percent)
g<-g+geom_text(aes(label=as.character(100*MedianGrowth)), position=position_dodge(width=0.9), vjust=-0.25)
g

enter image description here

1 个答案:

答案 0 :(得分:3)

图形参数设置可以是矢量,以便不同 形状(这里的geom文本)可以有不同的外观。

您需要将 vjust 作为向量,使用MedianGrowth的相反符号

您的数据

growth <- data.frame(ElapsedTimeMonths=c(3,6,12,24),
                   MedianGrowth=c(-0.011,-0.002,0.014,0.052),
                  )

我创建了vjust矢量

 vvjust <- rep(1, length(growth$MedianGrowth))
 vvjust[growth$MedianGrowth > 0 ] <- -0.25
 [1]  1.00  1.00 -0.25 -0.25

然后我绘制

g<- ggplot(growth, aes(x=factor(ElapsedTimeMonths),y=MedianGrowth))
g<- g+ geom_bar(stat='identity',position='dodge')
g<- g+ scale_y_continuous(labels = percent)
g<- g+ geom_text(aes(label=as.character(100*MedianGrowth)), 
                 position=position_dodge(width=0.9), vjust=vvjust)

enter image description here