如何在有序分类条形图(geom_bar)中使用geom_bracket添加标注括号?
解决geom_bracket标注有序条形图的错误问题
你遇到的错误是因为x轴通过reorder(country, -share)重新排序后,geom_bracket需要的是排序后的x轴数值位置,而非原始的国家代码字符串。以下是正确的实现方式:
步骤1:确保安装并加载依赖包
geom_bracket属于ggsignif包,先完成安装和加载:
install.packages("ggsignif") library(ggsignif) library(tidyverse)
步骤2:完整绘图代码(包含Top 4标注)
直接用数值指定前四个条形的x轴位置(排序后ENG是第1位,FRA是第4位),在y=30处添加悬浮括号标注:
df <- tibble( country= c("ENG","ESP", "ITA", "FRA", "NLD", "POR", "AUT", "TUR", "CHE", "RUS"), share=c(25.71, 21.74, 11.54, 10.49, 3.76, 3.73, 2.67, 2.34, 2.07, 1.97) ) df %>% ggplot() + geom_bar(aes(x = reorder(country, -share), y = share), stat = "identity", width = 0.8, position = "dodge") + geom_bracket( xmin = 1, # 排序后第一个条形的位置(ENG) xmax = 4, # 排序后第四个条形的位置(FRA) y.position = 30, label = "Top 4", size = 0.8, # 括号线条粗细 label.size = 4 # 标注文字大小 )
关键说明
- 当用
reorder()调整x轴顺序后,x轴的底层数值是1到n(n为条形数量),对应排序后的条形位置,直接用这些数值指定xmin和xmax就能准确定位分组范围。 - 如果需要标注其他分组,只需要调整
xmin和xmax对应的数值即可(比如第5到第7个条形就设为xmin=5, xmax=7)。
内容的提问来源于stack exchange,提问作者user18803194
相关产品推荐
相关产品推荐

