を使用するネストされたプロットを使用して、ggplot2::facet_wrap
またはプロットを作成したいと思います。facet_grid
ggforce::facet_zoom
と同様の方法で、できればストリップテキストラベルを使用してそれらを並べることもできれば十分うれしいfacet_grid
ですが、それを機能させる方法もまったくわかりません。
例: ファセット プロット
library(ggplot2)
library(ggforce)
library(dplyr)
p1 <- ggplot(mtcars) +
geom_boxplot(
aes(
x = factor(gear),
y = mpg,
fill = factor(gear)
)
) +
facet_wrap(
facets = ~cyl,
nrow = 2,
scales = "free_y"
)
p1
ただし、各ファセットは次のようにする必要があります (これは上記の最初のファセットです)。
zoomlims <- data.frame(
cyl = c(4, 6, 8),
lower = c(27, 18, 13),
upper =c(32, 21, 17)
)
p2a <- ggplot(mtcars %>% filter(cyl == 4)) +
geom_boxplot(
aes(
x = factor(gear),
y = mpg,
fill = factor(gear)
)
) +
facet_zoom(
ylim = c(zoomlims$lower[1], zoomlims$upper[1]),
zoom.size = 1
)
p2a
理想的には、1 つのファセット呼び出しで zoom と wrap の両方のすべての引数を受け取りますが、そうではなく、1 つのファセット関数を別の後に呼び出すと、前の関数がオーバーライドされるだけです (例: zoom second)。
p3a <- ggplot(mtcars) +
geom_boxplot(
aes(
x = factor(gear),
y = mpg,
fill = factor(gear)
)
) +
facet_wrap(
facets = ~cyl,
nrow = 2,
scales = "free_y"
) +
facet_zoom(
ylim = c(zoomlims$lower, zoomlims$upper),
zoom.size = 1
)
p3a
または2番目にラップ
p3b <- ggplot(mtcars) +
geom_boxplot(
aes(
x = factor(gear),
y = mpg,
fill = factor(gear)
)
) +
facet_zoom(
ylim = c(zoomlims$lower, zoomlims$upper),
zoom.size = 1
) +
facet_wrap(
facets = ~cyl,
nrow = 2,
scales = "free_y"
)
p3b
パッチワークでこれを模倣することは可能かもしれませんが、それも機能せず、ラッピングからストリップ テキストを含めません (ただし、注釈を付けることができます)。
library(patchwork)
p2b <- ggplot(mtcars %>% filter(cyl == 6)) +
geom_boxplot(
aes(
x = factor(gear),
y = mpg,
fill = factor(gear)
)
) +
facet_zoom(
ylim = c(zoomlims$lower[1], zoomlims$upper[1]),
zoom.size = 1
)
p2c <- ggplot(mtcars %>% filter(cyl == 8)) +
geom_boxplot(
aes(
x = factor(gear),
y = mpg,
fill = factor(gear)
)
) +
facet_zoom(
ylim = c(zoomlims$lower[1], zoomlims$upper[1]),
zoom.size = 1
)
p4 <- p2a + p2b + p2c + plot_layout(nrow = 2, guides = "collect")
p4
考え?
reprex パッケージ(v0.3.0)により 2020-02-14 に作成