如何在条形图上方的 ggplot2 中为列之间的变化创建水平括号?

How create horizontal brackets for variation between columns in ggplot2 above barchart?

数据集在这里: 周,session 第 1,100 周 周2,120 周3,90 第 4,180 周

没有括号的图形代码在这里:

  ggplot(data=df, aes(x=week, y=session)) +
  geom_bar(stat="identity", fill="steelblue")+
  geom_text(aes(label=session), vjust=1.6, color="white", size=3.5)+
  theme_minimal()

有一个函数ggpubr::stat_pvalue_manual最初是为测试两组数据点的显着性条设计的:

library(ggpubr)
#> Loading required package: ggplot2
library(tidyverse)

data <- tribble(
  ~group, ~value,
  1, 100,
  2, 120,
  3, 90,
  4, 180,
)

bar_data <- tribble(
  ~group1, ~group2, ~label, ~y.position,
  1,2, "20%", 200,
  2,3, "-25%", 200,
  3,4, "200%", 200
)

data %>%
  ggplot(aes(group, value)) +
    geom_col() +
    stat_pvalue_manual(bar_data, bracket.shorten = 0.1)

reprex package (v2.0.0)

于 2022-04-27 创建

也可以自动创建差异,例如使用

bar_data <- 
  data %>%
  transmute(
    group1 = group,
    group2 = group + 1,
    diff = (lead(value) - value) / value,
    label = paste0(diff * 100, "%"),
    y.position = 200
   ) %>%
   filter(!is.na(diff))