ggplot - 按功能输出的方面

Ken*_*ams 9 r facet ggplot2

我不确定如何通过对象data元素中的数据函数来进行研究ggplot.在下面的玩具示例中,我想要做的是这样的:

df <- data.frame(x=1:8, y=runif(8), z=8:1)
ggplot(df, aes(x=x, y=y)) + geom_point() + facet_wrap( ~ (z %% 2))
Run Code Online (Sandbox Code Playgroud)

但这给出了错误:Error in layout_base(data, vars, drop = drop) : At least one layer must contain all variables used for facetting.

我可以通过转换数据框来实现所需的结果:

ggplot(transform(df, z=z%%2), aes(x=x, y=y)) + geom_point() + facet_wrap( ~ z)
Run Code Online (Sandbox Code Playgroud)

但通常不希望使用这样的转换,例如,如果我已经获得了一个ggplot对象,并且我想为它添加一些特殊的方面.

Ale*_*own 3

这对我来说听起来很熟悉,但我从未设法解决它 - 我认为方面变量处理不如美学变量处理强大。

解决您的根本需求 - 对现有的 ggplot 进行临时方面;请注意,您可以批量替换现有 ggplot 的(主)数据集R- 例如

myplot %+% transform(myplot$data, z=z%%2)
Run Code Online (Sandbox Code Playgroud)