参数化的ggplot2直方图/密度AES函数找不到对象

Ken Lin

我创建了一个直方图/密度图函数,我希望对y轴进行计数而不是密度,但是在参数化其binwidth时遇到了问题。

我使用基于http://docs.ggplot2.org/current/geom_histogram.html的示例来说明我的尝试。

这是成功的plotMovies1函数。我按照引用的url来制作y轴..count ..而不是..density ..请注意,它在两个地方使用了硬编码的.5 binwidth,这就是我要参数化的...

# I want y axis as count, rather than density, and followed
# https://stat.ethz.ch/pipermail/r-help/2011-June/280588.html
plotMovies1 <- function() {
  m <- ggplot(movies, aes(x = rating))
  m <- m + geom_histogram(binwidth = .5)
  m <- m + geom_density(aes(y = .5 * ..count..))
}

直方图/密度(计数为y轴)和硬编码二进制宽度

我的第一次,未能在在本地BW参数化binwidth天真尝试plotMovies2 ...

# Failed first attempt to parameterize binwidth
plotMovies2 <- function() {
  bw <- .5
  m <- ggplot(movies, aes(x = rating))
  m <- m + geom_histogram(binwidth = bw)
# Error in eval(expr, envir, enclos) : object 'bw' not found 
  m <- m + geom_density(aes(y = bw * ..count..))
}
> print(plotMovies2())
Error in eval(expr, envir, enclos) : object 'bw' not found

我看讨论关于通过当地的环境,在ggplot AES在https://github.com/hadley/ggplot2/issues/743,但plotMovies3无法以同样的方式,未能找到BW对象...

# Failed second attempt to parameterize binwidth, even after establishing
# aes environment, per https://github.com/hadley/ggplot2/issues/743
plotMovies3 <- function() {
  bw <- .5
  m <- ggplot(movies, aes(x = rating), environment = environment())
  m <- m + geom_histogram(binwidth = bw)
# Error in eval(expr, envir, enclos) : object 'bw' not found 
  m <- m + geom_density(aes(y = bw * ..count..))
}
> print(plotMovies3())
Error in eval(expr, envir, enclos) : object 'bw' not found

我终于尝试设置一个全球性的,但它仍然无法找到对象...

# Failed third attempt using global binwidth
global_bw <<- .5
plotMovies4 <- function() {
  m <- ggplot(movies, aes(x = rating), environment = environment())
  m <- m + geom_histogram(binwidth = global_bw)
# Error in eval(expr, envir, enclos) : object 'global_bw' not found 
  m <- m + geom_density(aes(y = global_bw * ..count..))
}
> print(plotMovies4())
Error in eval(expr, envir, enclos) : object 'global_bw' not found

给定plotMovies3和plotMovies4,我想这不是一个直接的环境问题。谁能阐明我该如何解决?同样,我的目标是能够创建直方图/密度图函数

  1. 它的y轴是计数而不是密度,并且
  2. 可以将其binwidth参数化(例如,用于操纵)

绝对不是很漂亮,但是如果您需要解决方法,可以使用常规density功能

plotMovies5 <- function(binw=0.5) {
  m <- ggplot(movies, aes(x = rating))
  m <- m + geom_histogram(binwidth = binw)
  wa <- density(x=movies$rating, bw = binw)
  wa <- as.data.frame(cbind(xvals = wa$x, yvals = wa$y * wa$n * binw))
  m <- m + geom_point(data = wa, aes(x = xvals, y = yvals))
}
print(plotMovies5(binw=0.25))

请注意,由于密度估计值并不完全相等,因此您仍需要对变量进行修补,如下所示:

binw = 0.5
m <- ggplot(movies, aes(x = rating))
m <- m + geom_density(aes(y = 0.5 * ..count..))
wa <- density(x=movies$rating, bw = binw)
wa <- as.data.frame(cbind(xvals = wa$x, yvals = wa$y * wa$n * binw))
m <- m + geom_point(data = wa, aes(x = xvals, y = yvals))
m

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ggplot2中创建密度直方图?

来自分类Dev

使用ggplot2的直方图密度

来自分类Dev

在ggplot2中创建密度直方图?

来自分类Dev

找不到对象,但存在ggplot2

来自分类Dev

ggplot2中的密度直方图:标签栏高度

来自分类Dev

如何使用ggplot2绘制填充的直方图及其密度?

来自分类Dev

使用ggplot2的序数因子的密度直方图

来自分类Dev

ggplot2密度与密度函数有何不同?

来自分类Dev

找不到absoluteGrob(ggplot2)

来自分类Dev

具有自定义bin边缘的ggplot2密度直方图

来自分类Dev

ggplot2密度直方图,宽度= .5,vline和居中的条形位置

来自分类Dev

在ggplot2中将密度线添加到具有多个变量的直方图

来自分类Dev

ggplot2密度直方图,宽度= .5,vline和居中的条形位置

来自分类Dev

在ggplot2不同数据集中混合直方图和密度图

来自分类Dev

ggplot2 eval中的错误(expr,envir,enclos):找不到对象

来自分类Dev

在导入ggplot2的软件包中使用ggplotGrob函数时找不到

来自分类Dev

使用ggplot2的直方图

来自分类Dev

使用ggplot2在一个组合图中的图密度和累积密度函数

来自分类Dev

ggplot2 绘图函数与参数范围

来自分类Dev

小组在ggplot2的AES参数中做什么

来自分类Dev

在ggplot2中的aes()函数中使用颜色

来自分类Dev

在ggplot2中将密度线添加到带有计数数据的直方图

来自分类Dev

无法实例化代理...找不到无参数的构造函数

来自分类Dev

ggplot2:覆盖密度图R

来自分类Dev

使用ggplot2的圆形密度图

来自分类Dev

设置ggplot2直方图中的中断

来自分类Dev

ggplot2:带条件的直方图

来自分类Dev

ggplot2:带条件的直方图

来自分类Dev

极限直方图输出ggplot2

Related 相关文章

热门标签

归档