Фон
По моему опыту, FlexDashboard дает вам только определенную степень контроля. Чтобы получить больше контроля, вы можете создать один графический объект и затем передать его в одну «точку» FlexDashboard.
- Преимущество - это высокая степень настройки, которую вы можете иметь.
- Недостатки заключаются в том, что это еще один шаг, и масштабирование теперь становится немного сложным для управления.
Таблица может быть настоящим подстановочным знаком здесь,Может быть трудно заставить объект tableGrob()
выглядеть и масштабироваться так, как вы хотите.
Есть также некоторые известные проблемы. Например, при textGrob()
, когда вы пытаетесь выровнять текст по левому краю, он выравнивает по центру текста по левому краю, удаляя половину текста из вашего изображения.
Пример
Мы будемиспользуйте набор данных mtcars
для создания заголовка, двух графиков и одной таблицы. Из этого примера видно, что графики и таблицы могут быть полностью независимы друг от друга.
Затем мы будем использовать ggplot2
, grid
и gridExtra
, чтобы выровнять их в сетке 3x2. Наш макет будет следующим:

library(ggplot2)
library(grid)
library(gridExtra)
Еще один полезный пакет для этого типа вещей - cowplot
.
Создание графиков
dat <- mtcars
plot1 <- ggplot(mtcars, aes(x = hp, y = mpg)) +
geom_point()
plot2 <- ggplot(mtcars, aes(x = wt)) +
geom_histogram()
table1 <- tableGrob(head(dat), theme = ttheme_default(base_size = 10))
title <- textGrob("Combined Charts", gp = gpar(fontsize = 24, fontfamily = "sans"))
Комбинирование графиков
grid_layout <- rbind(c(1, 1),
c(2, 3),
c(4, 4))
group1 <- grid.arrange(title, plot1, table1, plot2,
layout_matrix = grid_layout,
heights= c(1, 4, 4))
grid.draw(group1)

FlexDashboard
Затем вы взяли бы это вместеобъект и добавить его обратно в файл FlexDashboard. Вот фрагмент из вашего примера.
### Performance {data-height=2000}
```{r}
grid.draw(group1)
```