タイルのファセットプロットを結合しています。私は各タイルを正方形にするか、少なくとも同じ高さと幅にします。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
で作成することができたと思ったが、上記のプロットのレイアウトの近くにはどこにもいられなかった。