将标签与“geom\u text\u repel”组合?

将标签与“geom\u text\u repel”组合?,r,ggplot2,ggrepel,R,Ggplot2,Ggrepel,如何创建一个包含两点的标签?在这个例子中,我感兴趣的是制作一个标签,它是“6”和“8”条的总和,并且有一条线指向每一条。目前我有: library(tidyverse) library(ggrepel) mtcars %>% group_by(cyl) %>% summarise(mpg = median(mpg)) %>% ggplot(aes(factor(cyl), mpg, label = mpg)) + geom_bar(stat = "ide

如何创建一个包含两点的标签?在这个例子中,我感兴趣的是制作一个标签,它是“6”和“8”条的总和,并且有一条线指向每一条。目前我有:

library(tidyverse)
library(ggrepel)

mtcars %>% 
  group_by(cyl) %>% 
  summarise(mpg = median(mpg)) %>% 
  ggplot(aes(factor(cyl), mpg, label = mpg)) +
  geom_bar(stat = "identity") +
  geom_text_repel()

标签大致相当于下面的代码,位于6条和8条之间的某个位置,线条指向每一条

label <- mtcars %>% 
  group_by(cyl) %>% 
  summarise(mpg = median(mpg)) %>% 
  filter(cyl >= 6) %>% 
  summarise (mpg = sum(mpg))
label%
组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别
总结(mpg=中值(mpg))%>%
过滤器(气缸>=6)%>%
总结(mpg=总和(mpg))

根据@JonSpring的评论,我写的概括回答是:

df <- 
mtcars %>% 
  group_by(cyl) %>% 
  summarise(mpg = median(mpg)) 

eight <- df %>% filter(cyl == 8) %>% pull(mpg)
six <- df %>% filter(cyl == 6) %>% pull(mpg)
upper <- max(c(six, eight))
total <- sum(six, eight)

df %>% 
  ggplot(aes(factor(cyl), mpg)) +
    geom_bar(stat = "identity") +
    annotate("segment", x = 2, xend = 2.5, y = six, yend = upper + 10) +
    annotate("segment", x = 3, xend = 2.5, y = eight, yend = upper + 10) +
    annotate("label", x = 2.5, y = upper + 10, label = total)
df%
组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别组别
总结(mpg=中值(mpg))
8%过滤器(气缸==8)%>%拉力(mpg)
6%过滤器(气缸==6)%>%拉力(mpg)

我不知道有什么“内置”的方法可以做到这一点,但也许你可以使用
annotate(“text”…)
annotate(“segment”…)
来达到这一点。你是否知道segment是否可以作为条形高度的函数以通用的方式编写?