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の軸ラベルを改行する方法を紹介しました。
少しでもお役に立てたら嬉しいです。