Как добавить метки данных в график гантелей?

#r #ggplot2 #ggalt

#r #ggplot2 #ggalt

Вопрос:

Мне нужно добавить метки данных со знаками% на мой график гантелей. Есть идеи, как это сделать? У меня есть код, который пытается это сделать, но выдает ошибку «Ошибка в x * 100: нечисловой аргумент для двоичного оператора». Также возможно ли увеличить шрифт операторов на графике? Смотрите мой код ниже, а также данные и график здесь

данные: https://gofile.io/d/k8vadK График: https://imgur.com/a/dkiRuZv

 blue <- "#0171CE"
red <- "#DE4433"
percent_first <- function(x) {
  x <- sprintf("%d%%", round(x*100))
  x[2:length(x)] <- sub("%$", "", x[2:length(x)])
  x
}
library(ggplot2) 
library(ggalt)   
library(tidyverse)

ggplot()  
  geom_segment(data=overall, aes(y=statement, yend=statement, x=0.8, xend=1), color="#b2b2b2", size=0.15)  
geom_dumbbell(data=overall, aes(y=statement, x=prior, xend=current),
              size=1.5, color="#b2b2b2", size_x=3, size_xend = 3, colour_x = red, colour_xend = blue)  
geom_text(data=filter(overall, statement=="The meeting was well organized"),
          aes(x=current, y=statement, label="2020"),
          color=blue, size=3, vjust=-1.5, fontface="bold", family="Arial")  
  geom_text(data=filter(overall, statement=="The meeting was well organized" ),
            aes(x=prior, y=statement, label="2019"),
            color=red, size=3, vjust=-1.5, fontface="bold", family="Arial")  
geom_text(data=overall, aes(x=prior, y=statement, label=percent_first(rep)),
          color=red, size=2.75, vjust=2.5, family="Arial")  
  geom_text(data=overall, color=blue, size=2.75, vjust=2.5, family="Arial",
            aes(x=prior, y=statement, label=percent_first(dem)))


 

Ответ №1:

Файл данных больше недоступен, поэтому вот некоторые данные, которые я получил с другого сайта. https://plotly.com/r/dumbbell-plots /

Это может быть полезно, если вам все еще нужна помощь здесь или может помочь кому-то еще

Спасибо

 ##Get some data
s <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")
s$School <- factor(s$School, levels = s$School[order(s$Men)])
s1<-s %>% mutate("type" = 'Gender earnings disparity') 

##Use the Dumbbell R package to Plot



##Plot
plot1<-dumbbell::dumbbell(xdf=s1,id="School",key = "type", column1 = "Women", column2 = "Men", delt=1 ,arrow = 1, lab1 = "Women", lab2="Men", p_col1 = "red", p_col2 = "blue" ,pt_val = 1 , pval = 2, textsize = 3)   
  xlim(60,170)   
  facet_wrap( . ~ type)

 

dumbbell R Pacakge