我想调整条形图上的文字.
我试图调整hjust / vjust以显示我喜欢它但似乎它不能正常工作.
ggplot(data) + geom_bar(aes(name,count,fill = week),stat='identity',position = 'dodge') + geom_text(aes(name,label=count),hjust=0.5,vjust=3,size=2,position = position_dodge(width = 1)) + coord_flip()
所以我希望数字位于每个条形图上,中间位于右边缘,因此它的可读性不会像最后一部分那样重叠.
解决方法
编辑:
让hjust / vjust更智能地运行的更简单的解决方案是将组审美添加到geom_text然后调整和调整.位置自动调整组.
1.垂直方向
ggplot(data) + geom_bar( aes(x = name,y = count,fill = week,group = week),position = 'dodge' ) + geom_text( aes(x = name,label = count,position = position_dodge(width = 1),vjust = -0.5,size = 2 ) + theme_bw()
这给出了:
2.水平方向
ggplot(data) + geom_bar( aes(x = name,hjust = -0.5,size = 2,inherit.aes = TRUE ) + coord_flip() + theme_bw()
这给出了:
这不一定是执行此操作的最常用方法,但您可以使用填充相关的hjust(或vjust,取决于方向)变量.我不完全清楚如何选择调整参数的值,目前它是基于看起来正确的.也许其他人可以建议一种更通用的方法来选择这个参数值.
1.垂直方向
library(dplyr) library(ggplot2) # generate some data data = data_frame( week = as.factor(rep(c(1,2),times = 5)),name = as.factor(rep(LETTERS[1:5],times = 2)),count = rpois(n = 10,lambda = 20),hjust = if_else(week == 1,5,-5),vjust = if_else(week == 1,3.5,-3.5) ) # Horizontal ggplot(data) + geom_bar( aes(x = name,vjust = vjust),inherit.aes = TRUE ) + coord_flip() + theme_bw()
这是看起来像:
2.水平方向
ggplot(data) + geom_bar( aes(x = name,inherit.aes = TRUE ) + coord_flip() + theme_bw()
这是看起来像: