0

是否可以刻面一组多面图?我想要facet_wrap一组多面图。

我想出的最好的cowplot解决方案是一个效果不佳的解决方案。理想情况下,我们不必编写单独的图形对象。

library(ggplot2)
library(cowplot)


g1 <- ggplot(mtcars, aes(disp, mpg)) + geom_point() + facet_wrap(~am)
g2 <- ggplot(mtcars, aes(disp, cyl)) + geom_point() + facet_wrap(~am)
plot_grid(g1, g2, labels = c("Facet Group 1", "Facet Group 2"))

reprex 包(v0.2.0)于 2018 年 10 月 8 日创建。

编辑:

我很欣赏下面的“重塑数据”方法,但它们并不完全适用于我想要完成的工作。我想创建一个构面层次结构,其中“构面组 1/构面组 2”比am. 如果您愿意,“重塑数据”方法会“融化”层次结构。

编辑2:

这是我制作四个单独的多面图,然后将它们放在 LaTeX 中的 hack。如果它在那里,仍然会喜欢ggplot 解决方案!

在此处输入图像描述

4

2 回答 2

1

您可以有多个级别的方面。在这里,我们只需要稍微重塑您的数据

library(ggplot2)
library(dplyr)
library(tidyr)

mtcars %>% 
  select(disp, am, mpg, cyl) %>% 
  gather("measure", "y", mpg, cyl) %>% 
  ggplot(aes(disp, y)) + 
  geom_point() + facet_wrap(~measure+am,nrow = 1)

在此处输入图像描述

但是,如果您真的需要准确控制每个条带的传播距离,那么您可能不会玩得开心。

于 2018-10-09T04:03:41.337 回答
1

我能想到的最简单的解决方案是修改数据本身。但也许这个问题有一个不那么“hackish”的解决方案。

library(tidyverse)

data <- mtcars %>%
  dplyr::select(disp, mpg, cyl, am) %>%
  tidyr::gather(., key = v.facet, value, mpg:cyl)

ggplot(data, aes(disp, value)) + 
  geom_point() + 
  facet_wrap(am ~ v.facet, nrow = 1)

reprex 包(v0.2.1)于 2018 年 10 月 9 日创建

于 2018-10-09T04:01:56.320 回答