library(ggplot2)
<- function(size = 12) {
theme_mini list(
theme_minimal(),
theme(
panel.grid = element_blank(),
panel.background = element_rect(color = "black"),
text = element_text(size = size),
strip.text = element_text(size = size + 4, face = "bold")
)
)
}
<-
gp1 ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point() +
facet_grid(rows = vars(Species)) +
theme_mini()
gp1
TL;DR
facet_grid(switch)
でストリップの方向を変えた時は、文字角度を変更する際にtheme()
の引数に注意する。
経緯
表題の通り、ggplot2
パッケージのfacet_grid(switch = "y")
を指定した際に、theme()
のstrip.text.y = element(angle = 0)
などでstripの文字の見栄えを変更できずにハマった。 例としては次の様なプロットを作成したときに、
種名が書かれたストリップを右側から左側に移動させたいときには、以下の様にfacet_grid(switch = "y")
を指定するとできる。
このとき、移動させたストリップの文字の向きを変えたい(例えば文字が水平になる様に回転させたい)とおもって、theme(strip.text.y = element_text(angle = ~))
を変えても、変更が反映されなかった。
解決
以下のリンク先のGithub issueを見つけて解決した。
要は指定するtheme()
の引数が間違っていて、theme(strip.text.y.left)
を指定しなければいけなかったらしい。
ハマった原因としては、公式のReferenceサイトにもこの引数のことは書かれていない様だし、theme()
のタブ補完の候補でも出てこなかったので気付かなかった、というのが大きな要因だと思う。
以下のように追記されていました。こちらのコミットで変わったようです。
As a consequence, some theme stylings need to be applied to the position-dependent elements rather than to the parent elements
二つ目のIssueをみると、ggplot2=v3.3.2
から導入されたようです。NEWS.mdに記載されていました(PR)。
また、一つ目のIssueでも示されていますが、いくつかのテーマ要素は親のテーマを引き継ぐことができ、例えば文字色はstrip.text.y
で指定しても変更されるようです。(ややこしい。)
一方でfacet_wrap
の場合とは異なり、facet_grid(switch = "x")
で上下のストリップを配置転換をした場合は、strip.text.x
で方向を変更できるようです。(これまたややこしい。)
Session information
sessionInfo()
R version 4.3.2 (2023-10-31)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.1
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: Asia/Tokyo
tzcode source: internal
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] ggplot2_3.5.1
loaded via a namespace (and not attached):
[1] vctrs_0.6.5 cli_3.6.3 knitr_1.48 rlang_1.1.4
[5] xfun_0.46 generics_0.1.3 renv_1.0.10 jsonlite_1.8.8
[9] labeling_0.4.3 glue_1.7.0 colorspace_2.1-1 htmltools_0.5.7
[13] scales_1.3.0 fansi_1.0.6 rmarkdown_2.25 grid_4.3.2
[17] evaluate_0.24.0 munsell_0.5.1 tibble_3.2.1 fastmap_1.1.1
[21] yaml_2.3.9 lifecycle_1.0.4 compiler_4.3.2 dplyr_1.1.4
[25] pkgconfig_2.0.3 farver_2.1.2 digest_0.6.34 R6_2.5.1
[29] tidyselect_1.2.1 utf8_1.2.4 pillar_1.9.0 magrittr_2.0.3
[33] withr_3.0.0 tools_4.3.2 gtable_0.3.5