гранить набор граненых графов - PullRequest
0 голосов
/ 09 октября 2018

Возможно ли огранить набор граненых графов?Я бы хотел 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"))

Создано в 2018-10-08 пакетом Представление (v0.2.0).

РЕДАКТИРОВАТЬ:

Я ценю подходы "изменить данные" ниже, но они не совсем работают для того, что я пытаюсь выполнить.Я хочу создать иерархию граней, где "Группа фасетов 1 / Группа фасетов 2" имеет более высокий уровень, чем am.Подход «преобразовать данные» «растапливает» иерархию, если хотите.

РЕДАКТИРОВАТЬ 2:

Вот хак, в котором я делаю четыре отдельных ограненных графа, затем выкладываю их в LaTeX,Все равно люблю решение ggplot, если оно там!

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы можете иметь несколько уровней граней.Здесь нам просто нужно немного изменить ваши данные

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)

enter image description here

Но если вам действительно нужно контролировать, насколько точно распространяется каждая из полосвы, вероятно, не собираетесь хорошо проводить время.

0 голосов
/ 09 октября 2018

Самым простым решением, которое я могу придумать, является изменение самих данных.Но, возможно, есть и менее «хакерское» решение этой проблемы.

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)

Создано в 2018-10-09 пакетом представ. (v0.2.1)

...