ggplot2の軸ラベルに、latex2expパッケージのTeX()関数を使って特殊文字を入れる方法を前に紹介しました。
今回は軸ラベルを改行する方法を紹介します。
\nで改行されない
デフォルトの作図関数では\nで改行できますが、ggplot2とlatex2expパッケージのTeX()関数を組み合わせて使うと改行されません。
今回使用するデータは次のとおりです。単位と()の間に\nが入っています。
| PPFD \n (μmol·$m^{-2}$·$s^{-1}$) | Plant height (cm) | 
|---|---|
| 50 | 15.2 | 
| 100 | 22.7 | 
| 150 | 28.3 | 
| 200 | 32.1 | 
| 250 | 35.6 | 
| 300 | 38.2 | 
| 350 | 40.5 | 
| 400 | 42.1 | 
| 450 | 43.4 | 
| 500 | 44.2 | 
これをこのままTeX()関数を組み合わせて作図すると次のようになります。

PPFDと(μmol m-2s-1)の間にnが表示されてしまいます。
\oversetを使って改行する
GitHubリポジトリで紹介されていた\oversetを使って改行していきます【参考リンク】。
\oversetはLaTeXで使われるコマンドで、2つの引数を取ります。1つ目の引数は文字や記号、2つ目の引数はベースとなる文字や数式です。このコマンドを使うことで、上に小さな文字や記号を配置できます。
基本構文は以下の通りです。
\overset{上に配置する文字や記号}{ベースとなる文字や数式}
これをコードに組み込むと改行できます。
# 必要なパッケージを読み込む
library(ggplot2)
library(latex2exp)
# データを作成
data <- read.csv(file.choose(),
                 header = TRUE,
                 check.names = FALSE,
                 na.strings = c(" "))
attach(data) # 列名を変数として使うため
# グラフを作成
ggplot(data, aes(x = `Light Intensity (μmol m-2s-1)`, y = `Plant height (cm)`)) +
  geom_bar(stat = "identity", fill = "gray", color = "black") +
  labs(
    x = "\\overset{PPFD}{(μmol·$m^{-2}$·$s^{-1}$)}" %>% TeX(), # \overset関数に直接列名を入力しています
    y = colnames(data[2])
  ) +
  theme_classic() +
  theme(aspect.ratio = 1) +
  scale_y_continuous(expand = c(0, 0))
ラベル改行用の関数を作成する
このままでは使いにくいので、次の関数を作成します。
wrap_label(x)
xには引数として文字列が入ります。
入力された文字列に\nが含まれる場合、その文字列を\nで分割して\overset関数の2つの引数に格納します。
文字列に含まれる\nはひとつだけにしてください。
# 必要なパッケージを読み込む
library(ggplot2)
library(latex2exp)
wrap_label <- function(x){
  if (grepl(pattern = "\\\\n", x)) {
    X <- strsplit(x, "\\\\n")
    paste0("\\overset{",
           X[[1]][1],
           "}{"
           ,X[[1]][2],
           "}")
  } 
}
# データ入力
# "path/to/your/file.csv" を任意のCSVファイルのパスに置き換えてください
data <- read.csv("path/to/your/file.csv",
                 header = TRUE,
                 check.names = FALSE,
                 na.strings = c(" "))
attach(data) # 列名を変数として使うため
# グラフを作成
ggplot(data, aes(x = `Light Intensity (μmol m-2s-1)`, y = `Plant height (cm)`)) +
  geom_bar(stat = "identity", fill = "gray", color = "black") +
  labs(
    x = colnames(data[1]) %>% wrap_label() %>% TeX(),
    y = colnames(data[2])
  ) +
  theme_classic() +
  theme(aspect.ratio = 1) +
  scale_y_continuous(expand = c(0, 0))この記事では、ggplot2の軸ラベルを改行する方法を紹介しました。
少しでもお役に立てたら嬉しいです。

  
  
  
  