Создайте структуру из нескольких панелей, чтобы потом вставлять графики разных размеров (всего 16)
Я сделал 15 круговых диаграмм и одну линейную диаграмму.
Моя цель теперь выстроить их в соответствии со структурой на картинке
Есть ли способ, как
par(mfrow=c(2,2))
построить такую структуру, в которой я могу впоследствии построить все графики, которые я сделал? Согласитесь, что в этом случае я бы хотел иметь возможность определять размеры участков.
2 ответа
Решение
Попробуй это,
library(gridExtra)
library(grid)
l <- cbind(c(5:1, NA), rbind(6:10, matrix(16, 5, 5)), c(11:15, NA))
# dummy placeholders for illustration
plots <- lapply(1:16, function(ii)
grobTree(rectGrob(), textGrob(paste("plot", ii))))
grid.arrange(grobs=plots, layout_matrix=l)
для реальных участков, попробуйте
plots <- replicate(16, ggplot(), simplify = FALSE)
или список ваших 16 участков (или гроссов сетки),
Возможно, вы захотите извлечь размеры в матрицу какого-то типа, но этот многословный способ приведет вас туда и позволит вам увидеть, что происходит с точки зрения размера и размещения - почти наверняка это оболочка для grid
или же gridExtra
:
library(cowplot)
p1 <- ggplot(mtcars, aes(x = hp, y = mpg)) + geom_point()
ggdraw() +
draw_plot(p1, 0, 0.1, 0.1, 0.1) +
draw_plot(p1, 0, 0.2, 0.1, 0.1) +
draw_plot(p1, 0, 0.3, 0.1, 0.1) +
draw_plot(p1, 0, 0.4, 0.1, 0.1) +
draw_plot(p1, 0, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.1, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.2, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.3, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.4, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.5, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.6, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.7, 0.5, 0.1, 0.1) +
draw_plot(p1, 0.7, 0.4, 0.1, 0.1) +
draw_plot(p1, 0.7, 0.3, 0.1, 0.1) +
draw_plot(p1, 0.7, 0.2, 0.1, 0.1) +
draw_plot(p1, 0.7, 0.1, 0.1, 0.1) +
draw_plot(p1, 0.1, 0, 0.6, 0.5) # this is the big one