Проблема в том, что у меня есть набор данных, где я хочу построить n "y" переменные против одной переменной «x» в ggplot2. Затем я хочу сделать несколько множителей для k уровней фактора и сохранить все k mulitplots в одном файле.Как создать график с несколькими фигурами (множитель) для каждого уровня фактора (n> 1) и сохранить в файле в R
Например, рассмотрите данные mtcars. Я могу генерировать фигуру у = л VS. х = миль в часе и отдельной фигура у = вес по сравнению с й = мили в часе и положить их вместе в один Multiplot по:
library(dplyr)
library(ggplot2)
library(gridExtra)
library(cowplot)
a1 <- ggplot(mtcars,aes(mpg,hp))+geom_point()
b1 <- ggplot(mtcars,aes(mpg,wt))+geom_point()
p <- grid.arrange(a1,b1)
ОК, теперь я хочу, чтобы создать один и тот же множитель, но для разных уровней фактора «am». (Edit: Я хотел бы иметь один множитель для am = 0 и один множитель для am = 1) Я нашел решение для создания графиков на основе коэффициента и сохранения в одном файле [здесь] How subset a data frame by a factor and repeat a plot for each subset?
Я попытался изменить приведенный выше код для моей проблемы, следующий моя попытка:
plots = mtcars %>%
group_by(am) %>%
do({a = a1 %+% .
b = b1 %+% .
plots = p %+% .})
Я также попытался:
plots = mtcars %>%
group_by(am) %>%
do({a1 = ggplot(.,aes(mpg,hp))+geom_point()
b1 = ggplot(.,aes(mpg,wt))+geom_point()
p = grid.arrange(a1,b1)})
в обеих случаях у меня есть ошибка
Error: Results are not data frames at positions: 1, 2
Я понимаю, что проблема с фреймом данных. Но я не понимаю, почему это проблема в моем коде, а не в примере кода. Любая помощь приветствуется! Заранее спасибо.
EDIT:
После TIMS пост ниже, собираются могут быть использованы для достижения конечного результата, что я ищу.
library(tidyr)
dat1 <- mtcars %>%
gather(key, value, hp, wt)
p <- ggplot(dat1,aes(mpg, value)) +
geom_point() +
facet_wrap(~ key, scales = "free_y")
plots = dat1 %>%
group_by(am) %>%
do(
plots = p %+% .)
pdf()
plots$plots
dev.off()
Однако это не позволяет значительно упростить настройку отдельных графиков для разных переменных. Скажем, я хотел добавить строку с использованием geom_vline для построения hp против mpg, но не иметь ее на графике wt против mpg. Я не уверен, что вы можете сделать это в этом методе.
Небольшое недоразумение. Я не хочу, чтобы все уровни «я» были в одном сюжете. В вашем примере у вас есть два графика в одном мультимножении. Я хочу 2 графика в одном мультиплексе для am = 0 и 2 графиков в одном мультиплексе для am = 1. Я хотел бы сохранить как PDF так, чтобы у меня было 2 графика на странице 1, соответствующие am = 0 и 2 графикам на стр. 2, соответствующие am = 1. – Micky