无法找到答案 - 在ggplot2中,是否可以在列的函数上进行分析,而不是直接对列的值进行分析?
简单可重复的例子:
示例数据:
df=data.frame(dat=c(1,2,5,5,7))
这有效:
ggplot(df, aes(x=1:5, y=dat, colour=factor(dat > 3))) +
geom_point() + facet_grid(dat ~ .)
这不是:
ggplot(df, aes(x=1:5, y=dat, colour=factor(dat > 3))) +
geom_point() + facet_grid((dat > 3) ~ .)
一种解决方案是为刻面添加一列。这有效:
df$facet=df$dat>3
ggplot(df, aes(x=1:5, y=dat, colour=factor(dat > 3))) +
geom_point() + facet_grid(facet ~ .)
但有没有办法在不必向data.frame添加新列的情况下执行此操作?
答案 0 :(得分:2)
我提出了一个妥协解决方案,这是在评论部分发布的@Nathan和@Яaffael的论点之间的权衡。
FacetingFunction <- function(df) {df$dat > 3}
ArbitraryFacetingPlot <- function(df, FacetingFunction) {
df$facet <- FacetingFunction(df)
p <- ggplot(df, aes(x=1:5, y=dat, colour=factor(dat > 3))) +
geom_point() +
facet_grid(facet ~ .)
df$facet <- NULL
p
}
ArbitraryFacetingPlot(df, FacetingFunction)
ArbitraryFacetingPlot(df, function(df) {df$dat==5})