geom_text如何根据需要在文本上定位文本?

前端之家收集整理的这篇文章主要介绍了geom_text如何根据需要在文本上定位文本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想调整条形图上的文字.

我试图调整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()

这是看起来像:

猜你在找的HTML相关文章