Несколько фигур с rhtml и вязанием

У меня есть файл Rhtml, из которого я получаю файл R. В этом файле R я делаю несколько графиков.

p=ggplot(data)
p+geom_line()

Теперь я могу создавать один сюжет за другим, и, выполняя knit(".Rhtml"), я получаю фигуру за другой.

Но хотелось бы, чтобы цифры были рядом. (Количество цифр варьируется от отчета к отчету).

Есть ли способ установить параметр в файле Rhtml, чтобы рисунки располагались рядом (например, два, три или четыре столбца).

Так что на самом деле это будет что-то вроде par(mfrow).


person steffi    schedule 03.12.2012    source источник


Ответы (2)


Участки можно комбинировать с пакетом gridExtra. Если у вас есть, например, три графика (p1, p2 и p3), команда такова:

library(gridExtra)
newPlot <- grid.arrange(p1, p2, p3)

Взгляните на пакет gridExtra для более подробной информации.

person Sven Hohenstein    schedule 03.12.2012
comment
Дело в том, что я хотел бы делать сюжеты на лету. Есть ли возможность заполнить сетку петлей? - person steffi; 03.12.2012
comment
@Sven, ты имеешь в виду grid.arrange? - person agstudy; 03.12.2012

Используйте out.width, чтобы поставить фигуры рядом. Вот воспроизводимый пример

## Figures side by side


```{r out.width = '50%', echo = F, message = F}
require(ggplot2)
p0 = qplot(wt, mpg, data = mtcars)
p1 = p0 + geom_smooth()
p0
p1
```

РЕДАКТИРОВАТЬ. Если вы хотите, чтобы отображался ваш код или отображались сообщения, просто добавьте fig.show = "hold" к параметрам вашего фрагмента, чтобы ваши цифры печатались после остальной части фрагмента, который затем будет печатать их рядом, так как вы установили out.width = "50%"

См. эту новость от knitr, чтобы узнать, когда было введено изменение.

person Ramnath    schedule 03.12.2012
comment
Установка out.width автоматически не ставит фигуры рядом. Я пытаюсь запустить grid.arrange... - person steffi; 03.12.2012
comment
я запустил свой код в RStudio, и на выходе цифры отображаются рядом. Возможно, вы захотите изменить значение 50%. Обратите внимание, что если вы не установите message = F, вам понадобится fig.show = "hold", чтобы ваши цифры печатались в конце фрагмента, а текст не мешал. - person Ramnath; 03.12.2012
comment
Работает нормально, ключевой момент был fig.show=hold. Что произойдет, если я захочу сделать, например, 20 графиков. Я думаю, я не получаю автоматически разрыв строки. - Итак, два участка в первом ряду, два участка во втором ряду... - person steffi; 03.12.2012
comment
Я только что решил проблему, проблема заключалась в том, чтобы написать print(ggplot(data...)). Просто ggplot(data) было недостаточно для печати данных. - person steffi; 03.12.2012
comment
@steffi, если у вас есть 20 графиков, вы автоматически получите разрывы строк, если ширина больше 1/3, но меньше 1/2 ширины контейнера. - person Yihui Xie; 03.12.2012