ggplot2のグラフで軸との隙間をなくす

R

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...

コメント

タイトルとURLをコピーしました