Как добавить проценты и дроби к ярлыку ggplot geom_text?
У меня есть набор данных, в котором меня интересует оценка результатов теста и процент людей, переживших событие:
dat <- data.frame(score = 1:7,
n.event = c(263,5177,3599,21399,16228,10345,1452),
n.total = c(877,15725,13453,51226,32147,26393,7875),
percentage = c(30,33,27,42,50,39,18))
Я могу построить это с процентами на графике, как это:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"%")))
Или я могу построить это с дробями, как это:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total,
")")),parse = TRUE)
Но я хочу, чтобы они оба были рядом. Это не работает:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"%","frac(",dat$n.event,
",", dat$n.total, ")")),parse = TRUE)
Я получаю эту ошибку:
Ошибка при разборе (text = as.character(lab))::1:3: неожиданный ввод 1: 30% разрыва (263 877) ^
Спасибо за помощь!
2 ответа
Проблема в том, что parse=True
говорит geom_text
использовать R математическую аннотацию (описано в ?plotmath
). В этой аннотации, %
является специальным символом, который должен быть экранирован, а пробелы также игнорируются.
Для того, чтобы помириться между %
и остальная часть формулы, мы должны избежать этого, используя '%'
, объединить его с предыдущим словом, используя *
и добавить пробел после использования ~
, Результат:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"*\'%\'~","frac(",dat$n.event,
",", dat$n.total, ")")),parse = TRUE)
Как насчет чего-то вроде этого:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"%"))) +
geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total,
")")),parse = TRUE, nudge_x = 0.0, nudge_y = -2)
Играть с nudge_x
а также nudge_y
параметры, чтобы получить метки в нужную позицию