Я не доволен scales::percent
, например, scales::percent(21/80)
возвращает «26,2%», в то время как я предпочитаю получать «26,25%». Так что я написал функцию быстрого:R ggplot2 не знает пользовательских функций
custom_percent <- function(x, digits = 2) {
paste0(round(100 * x, digits = digits), "%")
}
Однако, когда я пытаюсь использовать его с ggplot2, я получаю следующее сообщение об ошибке "Error in eval(expr, envir, enclos) : could not find function "custom_percent"
. Вот пример:
dset <- data.frame(data = 10:90)
p <- ggplot(dset, aes(x = data))
p + geom_bar(aes(y = (..count..)/sum(..count..)), width = .5) +
geom_text(aes(y = ((..count..)/sum(..count..)),
label = custom_percent((..count..)/sum(..count..))),
stat = "count", vjust = -0.25) +
scale_y_continuous(labels = custom_percent)
Что я могу сделать, чтобы получить доступ к custom_percent
?
Я не уверен, если это проблема с 'ggplot' не будучи в состоянии найти пользовательскую функцию. Например, 'd <- data.frame (x = 1: 10, y = rnorm (10))', а затем 'ggplot (d) + geom_text (aes (x, y, label = custom_percent (y)))' работает отлично. –
Кажется, проблема связана с использованием специальных переменных (например, '..count..') вместе с пользовательской функцией. Интересно. –
Было неожиданно, когда я использовал «весы :: проценты» везде, он просто сработал. Но тогда «весы» были тем же автором, который написал «ggplot2», поэтому, возможно, он использовал трюк в обоих. –