gpt4 book ai didi

r - ggplot2 跨组中的嵌套方面

转载 作者:行者123 更新时间:2023-12-03 14:58:30 25 4
gpt4 key购买 nike

我遇到了一种情况,我想创建一个由三个分组变量构成的图。为此,我只需使用 facet_grid(f1 ~ f2 + f3) ,但这里的问题是 f2 的标签将是多余的,让它们跨越嵌套在 f2 中的 f3 的方面会好得多。

MWE:

library('tibble')
library('ggplot2')
df <- tribble(
~x, ~y, ~f1, ~f2, ~f3,
0.5, 0.5, "a", "a", "a",
0.5, 0.5, "b", "a", "a",
0.5, 0.5, "a", "b", "a",
0.5, 0.5, "b", "b", "a",
0.5, 0.5, "a", "a", "b",
0.5, 0.5, "b", "a", "b",
0.5, 0.5, "a", "b", "b",
0.5, 0.5, "b", "b", "b"
)


p <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
facet_grid(f1 ~ f2 + f3)

MWE of nested facet plot

同样,我希望将 f2 的标签组合起来,这样它们就不会那么多余了。

编辑:这与其他问题不同,它询问如何使用现有分组来修改方面而不是添加新方面。

最佳答案

很抱歉破坏了这个帖子和无意的自我推销,但我尝试将其概括为 facet_nested()函数,它可以在 ggh4x 包中找到。
该功能没有经过广泛测试,但我认为它可能对人们有一些方便。也许一些好的反馈会由此而来。
我在这个函数中做了两个超出分组 strip 范围的修改。一是它不会自动扩展缺失的变量。这是因为我认为嵌套方面应该能够与非嵌套方面共存,而无需对 vars() 中的第二个或更多参数进行任何输入。使用两个 data.frames 绘图时。第二个是它从外到内对条进行排序,因此即使在 switch 时,内部也比外部更靠近面板。设置。
假设df,重现这个问题中的情节如下是 df在上面的问题中:

# library(ggh4x)
p <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
facet_nested(f1 ~ f2 + f3)
enter image description here
还有 a related question使用更真实的示例图,其工作方式如下所示,假设 dfdf从那个问题:
p <- ggplot(df, aes("", density)) + 
geom_boxplot(width=0.7, position=position_dodge(0.7)) +
theme_bw() +
facet_nested(. ~ species + location + position) +
theme(panel.spacing=unit(0,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90"),
axis.ticks.x=element_blank()) +
labs(x="")
enter image description here

关于r - ggplot2 跨组中的嵌套方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339154/

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