如何使用自定义函数更改geom_text中的文本标签
我有一些数据,我想使用stat_count()
中的一些变量来标记条形图。如何使用自定义函数更改geom_text中的文本标签
这就是我想做的事:
library(ggplot2) library(scales)
percent_and_count <- function(pct, cnt){
paste0(percent(pct), ' (', cnt, ')')
}
ggplot(aes(x=Type)) +
stat_count(aes(y=(..prop))) +
geom_text(aes(y=(..prop..), label=percent_and_count(..prop.., ..count))),
stat='count')
不过,我得到这个错误,因为它不能在我以为是什么或者是一些基本的包或数据帧寻找功能:
中的eval错误(表达式,ENVIR,enclos):找不到功能 “percent_and_count”
,如果我做percent(..prop..)
以及我得到这个错误,althoug h可以用scales::percent(..prop..)
。我没有从包中加载我的功能。
如果一切都失败了,我可以做
geom_text(aes(y=(..prop..), label=utils::getAnywhere('percent_and_count')$objs[[1]]((..prop..),(..count..))))
但这似乎不必要的迂回什么应该是一个太简单的任务。
回答:
您可以使用bquote
和aes_
:
# Sample data set.seed(2017);
df <- data.frame(
Type = sample(6, 100, replace = T)
);
library(ggplot2);
library(scales);
# Your custom function
percent_and_count <- function(pct, cnt){
paste0(percent(pct), ' (', cnt, ')')
}
ggplot(df, aes(x = Type)) +
stat_count(aes(y = ..prop..)) +
geom_text(
stat = "count",
aes_(
y = ~(..prop..),
label = bquote(.(percent_and_count)((..prop..), (..count..)))))
说明:bquote(.(percent_and_count)(...))
确保percent_and_count
被找到(如术语.(...)
在父环境评估)。然后我们使用aes_
来确保引用的表达式(使用~
或bquote
)得到正确评估。
还不算漂亮,但可能比使用utils::getAnywhere
更直接。
以上是 如何使用自定义函数更改geom_text中的文本标签 的全部内容, 来源链接: utcz.com/qa/260682.html