首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >布局类似于facet_grid的facet_wrap

布局类似于facet_grid的facet_wrap
EN

Stack Overflow用户
提问于 2020-02-17 07:37:57
回答 1查看 150关注 0票数 0

使用facet_grid根据提供的变量中的因子级别包装面板,即使没有给定组合的数据也是如此。这就是我追求的行为。

遗憾的是,y轴比例不能独立于单个面板级别(请参阅herehere)。为此,您必须使用facet_wrap

但是,facet_wrap不提供与facet_grid相同的布局,并且只显示具有要绘制的值的面板。

如何保持facet_grid-like布局,但具有独立的y轴比例?如果没有数据的面板是空白/无效的,只要它们占据适当的空间就可以了。

可重现的例子:

代码语言:javascript
复制
library(ggplot2)
set.seed(1)

# Generate data
test <- data.frame(x = c(rep(1, 6), rep(2, 6)), 
                   facet_1 = rep(c("A", "A", "A", "B", "B", "C"), 2),
                   facet_2 = rep(c("B", "C", "D", "C", "D", "D"), 2),
                   y = c(1e0, 1e1, 1e2, 1e3, 1e4, 1e5, rnorm(1, 1e0, 1e0*.34), rnorm(1, 1e1, 1e1*.34), rnorm(1, 1e2, 1e2*.34), rnorm(1, 1e3, 1e3*.34), rnorm(1, 1e4, 1e4*.34), rnorm(1, 1e5, 1e5*.34)))

# facet_grid - Shows blank panels B-B, B-C, and C-C. This is what I want.
#            - Does NOT scale y appropriately at the individual panel level.
ggplot(test, aes(x = x, y = y)) +
  facet_grid(facet_2 ~ facet_1, scales = "free") +
  geom_line()

代码语言:javascript
复制
# facet_wrap - Does NOT show blank panels B-B, B-C, and C-C.
#            - Does scale y appropriately at the individual panel level.
ggplot(test, aes(x = x, y = y)) +
  facet_wrap(vars(facet_1, facet_2), scales = "free") +
  geom_line()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-17 07:55:23

您可以complete丢失的组合,然后绘制。

代码语言:javascript
复制
library(ggplot2)

tidyr::complete(test, facet_1, facet_2, fill = list(x = 0, y = 0)) %>%
#Keeping them as NA would give a blank plot
#tidyr::complete(test, facet_1, facet_2) %>%
   ggplot() + aes(x = x, y = y) +
   facet_wrap(vars(facet_1, facet_2), scales = "free") +
   geom_line()

这会给你一个警告,因为在这3组中只有一个观察值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60254259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档