Я пытаюсь понять поведение по умолчанию ggplot2::facet_wrap()
с точки зрения того, как макет панели определяется при увеличении числа граней.
Я прочитал файл справки ?facet_wrap
, а также погуглил эту топи c с ограниченным успехом. В одном посте SO было сказано, что facet_wrap()
"возвращает симметричную матрицу графиков", но я не нашел ничего, что объяснило бы, каким именно будет поведение по умолчанию.
Итак, в следующий раз я сделал серию графиков с увеличивающимся числом граней (код показан ниже).
Шаблон на изображении создается впечатление, что facet_wrap()
пытается "сделать квадрат" ...
Вопросы
- Это правильно?
facet_wrap
Пытается ли визуализировать панели фасетов так, чтобы они в совокупности были больше похожи на квадрат, с точки зрения количества элементов в строках и столбцах? - Если нет, то что он на самом деле делает? Графические параметры учитывают в?
Код, который сделал сюжет
# load libraries
library(ggplot2)
library(ggpubr)
# plotting function
facetPlots <- function(facets, groups = 8){
# sample data
df <- data.frame(Group = sample(LETTERS[1:groups], 1000, replace = T),
Value = sample(1:10000, 1000, replace = T),
Facet = factor(sample(1:facets, 1000, replace = T)))
# get means
df <- aggregate(list(Value = df$Value),
list(Group = df$Group, Facet = df$Facet), mean)
# plot
p1 <- ggplot(df, aes(x= Group, y= Value, fill = Group))+
geom_bar(stat="identity", show.legend = FALSE)+
facet_wrap(. ~ Facet) +
theme_bw()+
theme(strip.text.x = element_text(size = 6,
margin = margin(.1, 0, .1, 0, "cm")),
axis.text.x=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.text.y=element_blank(),
axis.title.y=element_blank(),
plot.margin = unit(c(3,3,3,3), "pt"))
p1
}
# apply function to list
plot_list <- lapply(c(1:25), facetPlots)
# unify into single plot
plot <- ggpubr::ggarrange(plotlist = plot_list)