#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)