ggplot2でグラフを描いたとき、Y軸タイトルを長ーくすると、2列に降りたくなる。
▲ グラフの中に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の順
出来上がり
できあがり!
コード全体の記述は下記。
# インストール系
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の順
リンク
リンク
リンク
リンク