简体   繁体   中英

facet a set of facetted graphs

Is it possible to facet a set of faceted graphs? I'd love to facet_wrap a set of faceted graphs.

The best I came up with is a cowplot solution that doesn't work all that well. Ideally, we wouldn't have to write separate graph objects.

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"))

Created on 2018-10-08 by the reprex package (v0.2.0).

EDIT:

I appreciate the "reshape the data" approaches below, but they don't quite work for what I'm trying to accomplish. I want to create a hierarchy of facets, where "Facet Group 1 / Facet Group 2" is a higher level than am . The "reshape the data" approach "melts" the hierarchy, if you will.

EDIT 2:

Here's the hack in which I make four separate faceted graph, then lay them out in LaTeX. Would still love a ggplot solution if it's out there!

在此处输入图片说明

The easiest solution I can think of is modifying the data itself. But maybe there is a less "hackish" solution to this problem.

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)

Created on 2018-10-09 by the reprex package (v0.2.1)

You can have multiple levels of facets. Here we just need to reshape your data a bit

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)

在此处输入图片说明

But if you you really need to control exactly how far each of the strips spreads, you're probably not going to have a good time.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM