3
我正在組合tile的facet圖。我希望每個瓷磚都是正方形的,或者至少採用相同的高度和寬度。在grid.arrange中使用layout_matrix時的繪圖區域寬度
到目前爲止,我已設法使用layout_matrix
給每個瓷磚行等高度。當我試圖修復每個瓷磚列的相等寬度時(整個圖),我被卡住了。
基於mtcars
,試圖說明我的陰謀佈局(實際數據的方式更加複雜)的某些代碼:
library("tidyverse")
library("gridExtra")
df0 <- mtcars %>%
group_by(cyl) %>%
count()
df1 <- mtcars %>%
rownames_to_column("car") %>%
mutate(man = gsub("([A-Za-z]+).*", "\\1", car))
g <- list()
for(i in 1:nrow(df0)){
g[[i]] <- ggplot(data = df1 %>% filter(cyl == df0$cyl[i]),
mapping = aes(x = "", y = car, fill = qsec)) +
geom_tile() +
facet_grid(man ~ ., scales = "free_y", space = "free") +
labs(x = "", y = "") +
guides(fill = FALSE) +
theme(strip.text.y = element_text(angle=0)) +
coord_fixed()
}
m0 <- cbind(c(rep(1, df0$n[1]), rep(NA, max(df0$n) - df0$n[1])),
c(rep(2, df0$n[2]), rep(NA, max(df0$n) - df0$n[2])),
c(rep(3, df0$n[3]), rep(NA, max(df0$n) - df0$n[3])))
grid.arrange(grobs = g, layout_matrix = m0)
將會產生這個圖(減去我的MS油漆技能):
假定條形文本和y軸中標籤的不同長度導致繪圖區域的寬度不同。不知道我怎麼可以避免這種行爲?我以爲我可以創造大facet_grid
,但我無法接近上述地塊的佈局。