ggplot - 按功能输出的方面

时间:2012-09-04 21:51:17

标签: 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))

但是这会产生错误: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)

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

1 个答案:

答案 0 :(得分:3)

这对我来说听起来很熟悉,但我从来没有设法解决它 - 我认为facet变量处理的功能不如美学变量处理。

满足您的根要求 - 临时面对现有的ggplot;请注意,您可以替换批量现有R ggplot的(主)数据集 - 例如

myplot %+% transform(myplot$data, z=z%%2)