ggplot2:列上的箭头标签

问题描述 投票:0回答:1

我想在图表的列上添加带有百分比增长的标签,如下图所示: 列上带有箭头的图表,将它们成对连接,将增长百分比显示为标签

到目前为止,我只能用直线或曲线连接它们,而不是这些看起来更干净的“盒子”。

r ggplot2
1个回答
0
投票

可能有一个插件为这些提供了默认值作为一个简单的函数,但制作我们自己的函数并不太复杂。

在这里,我从一些假数据开始,然后添加一些辅助列。我们可以将其输入 ggplot2 层,该层提供列、箭头(这里使用

ggarrow
和标签框更漂亮。我在这里使用
dplyr::reframe
为每个原始观察指定四个坐标,对应于每个观察的四个点箭头。

library(ggplot2); library(dplyr)
data.frame(x = 1:3, y = 4:6) |>
  mutate(next_x = lead(x),
         next_y = lead(y),
         chng_y = scales::percent(next_y / y - 1)) |>
  ggplot(aes(x, y)) +
  geom_col() +
  ggarrow::geom_arrow(aes(group = row),
            data = ~mutate(., row = row_number()) |>
                 reframe(x = x + c(0.1, 0.1, 0.9, 0.9),
                         y = c(y * 1.05, 
                               pmax(y, next_y) * 1.15,
                               pmax(y, next_y) * 1.15,
                               next_y * 1.05), .by = row)) +
  geom_label(aes(x = (x + next_x)/2,
                 y = pmax(y, next_y) * 1.15,
                 label = chng_y))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.