r-yaxix-title-2line-2

ggplot2でグラフを描いたとき、Y軸タイトルを長ーくすると、2列に降りたくなる。

r-yaxix-title-2line-1 ▲ グラフの中にY軸タイトルが収まりきれない。。。

その方法の備忘録。

Y軸タイトルを2列にして、位置を調整する

正規表現「\n」で改行する。

# Y軸タイトルを2行に
labs(x = "",
y = "Thickness of the CA1 \n (ventral hippocampus) [μm]")

2列になったY軸タイトルを中央寄せに

左寄せになると格好が悪いので、「ggtext」のelement_textbox_simple()"を使って中央寄せにする。

# ggtextのインストール
install.packages("ggtext")
library(ggtext)

# Y軸タイトルを中央寄せ
theme(axis.title.y = element_textbox_simple(orientation = "left-rotated", halign = .5))

グラフ全体の位置を調整

2列にした長いタイトルが左にはみ出てしまうので、theme(plot.margin)"でグラフ位置を調節する。

# 図の位置を調整
theme(plot.margin = unit(c(1.5,0,.5,1.5),"cm"))     # UP, Rt, BOTTOM, Ltの順

出来上がり

できあがり!

r-yaxix-title-2line-2

コード全体の記述は下記。

# インストール系
install.packages("tidyverse")
install.packages("dplyr")
install.packages("ggplot2")
install.packages("ggbreak")
install.packages("readr")
install.packages("ggtext")
library(tidyverse)
library(dplyr)
library(ggplot2)
library(ggbreak)
library(readr)
library(ggtext)

# 平均値で棒グラフを作成
ggplot(Data4,
aes(x = Genotype,                         # 横軸に"Age"のデータ
y = `Thickness of the CA1`,
fill = Genotype)) +                       # 縦軸に”positive area [%]のデータ
stat_summary(
fun = "mean",                             # 平均値で作成
geom = "bar",                             # 種類は棒グラフ
position = "dodge",                       # Geotypeで分けた棒を横並びにする
colour = "black") +                       # 棒グラフの枠を黒に

# 棒グラフの中の色を変更
scale_fill_manual(values = c("#CCCCCC","#444444")) +

# エラーバーをつける
stat_summary(
fun = "mean",                             # エラーバーの中心は平均値
fun.min = function(x)mean(x) - sd(x)/sqrt(4),     # SEM(上)
fun.max = function(x)mean(x) + sd(x)/sqrt(4),     # SEM (下)
geom = "errorbar",                        # エラーバーを指定
position = position_dodge(.8),            # エラーバーの配置
width = .5, linewidth = .1,               # エラーバーの太さと幅
colour = "black"                          # エラーバーの色
) +

# 個々のデータをプロットする
geom_point(
position = position_jitterdodge(
jitter.width = .3,                        # プロットの横の散らばり具合を .3 に設定
jitter.height = 0                         # プロットの縦の散らばり具合は絶対 0 に。じゃないと嘘のプロットを表示することになる。
),
size = 5,                                 # プロットのサイズ
colour = "black",                         # プロットの線の色
aes(shape = Genotype)                     # プロットの形をどのデータでわけるか
) +
scale_shape_manual(                       # プロットの形をマニュアルで設定
values = c(21, 17)
) +

# グラフの背景を変更
theme_classic() +

# 文字の大きさを変える etc.
theme(axis.title.x = element_blank(),     # X軸のタイトルを消す
axis.text.x = element_text(size = 12),    # X軸のフォントサイズを変更
axis.text.y = element_text(size = 12),

# Y軸タイトルのサイズと中央寄せ
axis.title.y = element_text(size = 15), element_textbox_simple(orientation = "left-rotated", halign = .5),
legend.title = element_blank(),           # レジェンドタイトルを消す
legend.text = element_text(size = 15),
strip.text.x = element_text(size = 20)) + # レジェンドのフォントサイズと位置を変更

# Y軸タイトルを2行に
labs(x = "",
y = "Thickness of the CA1 \n (ventral hippocampus) [μm]") +

# 図の位置を調整
theme(plot.margin = unit(c(1.5,0,.5,1.5),"cm"))        # UP, Rt, BOTTOM, Ltの順
にほんブログ村 子育てブログ ワーキングマザー育児へ