ggplot2でグラフ(プロット)を作成した際にX軸やY軸との間に隙間(マージン,厳密にはパディング)ができてしまう.具体的には上のグラフで言うところの棒グラフがX軸から浮いてしまっているような状態.これを解決する.
バープロットの具体例
以下のような棒グラフを作成してみる.
# ライブラリの読み込み
library(tidyverse)
# データ読み込み
df <- iris
# プロットの作成
bar_fig <- df %>%
ggplot(aes(x = Species, y = Petal.Length, fill = Species)) +
geom_bar(stat = "summary", fun = "mean") +
# 以下は個人的な好み
theme_bw() +
scale_fill_brewer(palette = "Pastel1")
# プロット図
bar_fig
できたものをみると下図のようにグラフが浮いており,隙間になっている部分がある.これはそれぞれ”expand”によって規定されている.
具体的にはデフォルトで連続値の場合は値の範囲の5%(離散変数の場合は各辺に0.6単位ずつ)のパディングが設けられている.これを”scale_(x|y)continuous” と “scale(x|y)_discrete” の expand引数で調整してあげることで隙間をなくすようにする.

上記のごとくmult はベクトルが1つのときスケールの下限と上限の両方を定義し,ベクトルが2つの場合はc(下限値, 上限値)で規定されます.
expansionによる調整
これを利用して下記コードのように “scale_y_continuous” の “expand” で “expansion” を設定する(今回の例では下限側を 0%,上限側を 10% [つまり0.1] にしています).
# パディングを消す
bar_fig_no_padding <- bar_fig +
scale_y_continuous(expand = expansion(mult = c(0, .1)))
# プロット図
bar_fig_no_padding
きれいに軸にプロットをくっつけることができます.

参照

Generate expansion vector for scales — expansion
This is a convenience function for generating scale expansion vectorsfor the expand argument of scale_(x|y)_continuousan...



コメント