ggplot2 position_stack(vjust)具有绝对单位而不是比例

时间:2019-05-29 14:11:59

标签: r ggplot2

我有一个堆积的条形图,我想标记条形图中每个条形的值。这是一个示例:

diamonds %>%
  group_by(cut) %>% 
  count(low_price = price < 3000) %>% 
  ggplot() + 
  aes(
    x = cut, 
    y = n, 
    fill = low_price
    ) +
  geom_col() + 
  geom_text(
    aes(label = n),
    position = position_stack(vjust = 0.8)
    )

我正在使用position_stack(vjust = 0.8)来调整标签在条形图中的垂直位置。问题是调整是一个百分比:它实际上将标签放置在条形总高度的80%处。 我想以绝对单位表示类似的值:例如-1 cm或-每个栏的顶部距30 px。有没有办法做到这一点 ?

对不起,英语不好,谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我建议使用geom_text vjust而不是position_stack vjust。它不是您所要求的可自定义的绝对单位,但它是相对于文本大小的,这是磅值的绝对大小,因此它与条形的大小不成比例。

diamonds %>%
  group_by(cut) %>% 
  count(low_price = price < 3000) %>% 
  ggplot() + 
  aes(
    x = cut, 
    y = n, 
    fill = low_price
    ) +
  geom_col() + 
  geom_text(
    aes(label = n),
    position = position_stack(),
    vjust = 1.2
    )

enter image description here