我更新到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
解决方案记录不是很好,我想我发现它在堆栈溢出的某个地方。
答案 0 :(得分:11)
根据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,])
但是还有很多其他人使用烟斗等......