假设我想用以下公式绘制直方图(我知道它不是最好的,但它会说明问题):
set.seed(1)
dframe <- data.frame(val=rnorm(50))
p <- ggplot(dframe, aes(x=val, y=..count..))
p + geom_bar()
它运作得很好。但是,假设由于某种原因,我们希望频率除以收件人定义的数字。我的镜头是:
k <- 5
p <- ggplot(dframe, aes(x=val, y=..count../k))
p + geom_bar()
但是我遇到了这个恼人的错误:
Error in eval(expr, envir, enclos) : object 'k' not found
是否存在同时使用..count..
两种变量的方法?
答案 0 :(得分:31)
当您使用某些ggplot()
进行绘图时(例如stat
),似乎有y=..count..
函数存在一些错误。函数ggplot()
已经有environment
变量,因此可以使用此函数外部定义的变量。
例如,这样可行,因为k
仅用于更改x
变量:
k<-5
ggplot(dframe,aes(val/k,y=..count..))+geom_bar()
这会出错,因为k
用于更改使用stat y
计算的y=..count..
k<-5
ggplot(dframe,aes(val,y=..count../k))+geom_bar()
Error in eval(expr, envir, enclos) : object 'k' not found
要解决此问题,您可以在k
。{/ p>内查看aes()
k <- 5
ggplot(dframe,aes(val,k=k,y=..count../k))+geom_bar()