当前位置:  开发笔记 > 开发工具 > 正文

图层中的子参数不再适用于ggplot2> = 2.0.0

如何解决《图层中的子参数不再适用于ggplot2>=2.0.0》经验,为你挑选了1个好方法。

我更新到最新版本,ggplot2并通过在图层中打印子集遇到问题.

library(ggplot2)
library(plyr)
df <- data.frame(x=runif(100), y=runif(100))
ggplot(df, aes(x,y)) + geom_point(subset=.(x >= .5))

这些代码行在版本中工作1.0.1但不在2.0.0.它抛出一个错误Error: Unknown parameters: subset.

我找不到正式的更改日志或如何分配特定图层的方法.特别是因为这个plyr解决方案不是很好记录,我想我发现它在堆栈溢出的某个地方.



1> Mike Wise..:

根据ggplot2 2.0.0代码中的注释:

#' @param subset DEPRECATED. An older way of subsetting the dataset used in a
#'   layer.

可以在这里找到:https://github.com/hadley/ggplot2/blob/34d0bd5d26a8929382d09606b4eda7a36ee20e5e/R/layer.r

现在这样做的一种方法是:

library(ggplot2)
library(plyr)
df <- data.frame(x=runif(100), y=runif(100))
ggplot(df, aes(x,y)) + geom_point(data=df[df$x>=.5,])

或者这,(但要注意"非标准评估"(NSE):)

library(ggplot2)
library(plyr)
df <- data.frame(x=runif(100), y=runif(100))
ggplot(df, aes(x,y)) + geom_point(data=subset(df,x>=.5))

我认为这是最安全的,因为它没有NSE或美元符号字段选择器:

library(ggplot2)
library(plyr)
df <- data.frame(x=runif(100), y=runif(100))
ggplot(df, aes(x,y)) + geom_point(data=df[df[["x"]]>=.5,])

但是还有很多其他人使用管道等......

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有