我不确定如何通过对象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
对象并且我想向它添加一些特别的刻面。