R 如何在ggplot中使用aes中早期声明的变量,并使用特殊运算符(…count…,等等)

R 如何在ggplot中使用aes中早期声明的变量,并使用特殊运算符(…count…,等等),r,ggplot2,scope,R,Ggplot2,Scope,假设我想用以下公式绘制直方图,我知道这不是最好的,但它可以说明问题: set.seed(1) dframe <- data.frame(val=rnorm(50)) p <- ggplot(dframe, aes(x=val, y=..count..)) p + geom_bar() 是否有一种方法可以将类似..count..的变量与一些预定义的变量一起使用 当您使用某些统计数据进行绘图时,ggplot函数似乎存在一些错误,例如y=…count。。。函数ggplot已经有了环境变量

假设我想用以下公式绘制直方图,我知道这不是最好的,但它可以说明问题:

set.seed(1)
dframe <- data.frame(val=rnorm(50))
p <- ggplot(dframe, aes(x=val, y=..count..))
p + geom_bar()

是否有一种方法可以将类似..count..的变量与一些预定义的变量一起使用

当您使用某些统计数据进行绘图时,ggplot函数似乎存在一些错误,例如y=…count。。。函数ggplot已经有了环境变量,因此它可以使用在此函数外部定义的变量

例如,这将起作用,因为k仅用于更改x变量:

k<-5
ggplot(dframe,aes(val/k,y=..count..))+geom_bar()
要解决这个问题,您可以在aes中定义k


@迪兹赛尔弗特,我从来没有想到过。我已经准备好用get发布一个答案。@kuba p老实说,我认为有一个bug;ggplot有一个环境参数,但当使用stat变量时,它似乎被忽略used@baptiste这似乎是因为代码ggplotdframe、aesval/k、val+geom_point在没有problems@DidzisElferts在函数中调用ggplot时,有时会发现作用域存在问题,但通常使用环境是可行的。这里没有。
Error in eval(expr, envir, enclos) : object 'k' not found
k<-5
ggplot(dframe,aes(val/k,y=..count..))+geom_bar()
k<-5
ggplot(dframe,aes(val,y=..count../k))+geom_bar()
Error in eval(expr, envir, enclos) : object 'k' not found
k <- 5
ggplot(dframe,aes(val,k=k,y=..count../k))+geom_bar()