Создайте структуру из нескольких панелей, чтобы потом вставлять графики разных размеров (всего 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

участок

Другие вопросы по тегам