gpt4 book ai didi

r - ggplot2:对列函数进行分面

转载 作者:行者123 更新时间:2023-12-04 15:44:53 24 4
gpt4 key购买 nike

找不到答案——在 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 添加新列的情况下做到这一点?

最佳答案

我想出了一个折衷的解决方案,这是评论部分中@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})

关于r - ggplot2:对列函数进行分面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com