#r #ggplot2 #facet
#r #ggplot2 #фасет
Вопрос:
Я хочу создать несколько графиков, используя ggplot и facet_grid
, и сохранить график как объект. Моя проблема в том, что я также хочу сохранить каждую подгруппу (т. Е. каждый аспект) как объект отдельно. Теперь мой вопрос в том, можете ли вы извлечь один аспект из facet_grid
и сохранить его как объект? Вот несколько простых кодов:
library(ggplot2)
ggplot(data = mtcars, aes(x = disp, y = mpg))
geom_point()
facet_grid(. ~ am)
Теперь я хотел бы создать два объекта — один для am=0
и один для am=1
.
Ответ №1:
Я не уверен, почему вы не использовали бы подмножество, но вы можете извлекать отдельные грани из сетки фасетов.
library(ggplot2)
library(grid)
library(gtable)
p1 = ggplot(data = mtcars, aes(x = disp, y = mpg))
geom_point()
facet_grid(. ~ am)
g1 = ggplotGrob(p1)
# Rows and columns can be dropped from the layout.
# To show the layout:
gtable_show_layout(g1)
# Which columns (and/or rows) to drop?
# In this case drop columns 5 and 6 to leave am = 0 plot
# Drop columns 4 and 5 to leave am = 1 plot
# am = 0 plot
g1_am0 = g1[,-c(5,6)]
grid.newpage()
grid.draw(g1_am0)
# am = 1 plot
g1_am1 = g1[,-c(4,5)]
grid.newpage()
grid.draw(g1_am1)
Ответ №2:
Вы могли бы подмножествовать свои данные при вводе и удалить команду facet.
ggplot(data = subset(mtcars,am==0), aes(x = disp, y = mpg))
geom_point()
ggplot(data = subset(mtcars,am==1), aes(x = disp, y = mpg))
geom_point()
Я понял, что не ответил на ваш вопрос о сохранении в качестве объекта.
Перед кодом ggplot добавьте строку :
tiff(file="firstfolder from working dir/next folder/ name.tiff",units="in",width=5,height=6,res=72)
Вам нужно будет добавить dev.off()
после кода графика, чтобы материал снова отображался на экране вашего компьютера.
Вы можете использовать png, pdf и т.д. для разных форматов.
Если это только один вариант и вы используете RStudio, вы можете экспортировать вручную из окна графика. Смотрите кнопку экспорта над ним.
Комментарии:
1. Большое спасибо! Я действительно знаю о поднаборе, но мне было интересно, есть ли элегантный способ просто извлечь графики из facet_grid. Мне это интересно, потому что графики очень сложные (отсюда и длинный код), и я хочу, чтобы код был как можно более простым..
2. Насколько я знаю о @ehi, кроме моментальных снимков или обрезки, ничего другого
3. Проблема с моментальными снимками заключается в том, что нет отдельной метки масштаба и оси y..