統計学やRを学習していると、棒グラフを作成する必要に迫られる場面があります。棒グラフは、データの分布や傾向を視覚的に表現するのに適したグラフです。
棒グラフを作成する場合、棒の幅と間隔を調整することで、見栄えを良くしたり、データの傾向をより明確に伝えたりすることができます。
本記事では、Rのggplot2パッケージを用いて、棒グラフの棒の幅と間隔を調整する方法を解説します。
棒の幅を調整する
棒グラフの棒の幅を調整するには、geom_bar()
関数のwidth
引数を使用します。width
引数には、棒の幅を指定します。
とりあえずグラフを描いてみます。スクリプトは次のとおりです。
library(ggplot2)
df <- data.frame(
group = c("A", "B", "C"),
value = c(10, 20, 30)
)
ggplot(df, aes(x = group, y = value)) +
geom_bar(stat = "identity", width = 0.5)
スクリプトの説明
ここでは、df
という名前のデータフレームを作成しています。このデータフレームには2つの列があります:
group
:カテゴリを表す文字列の列("A", "B", "C")value
:各グループに対応する数値(10, 20, 30)
-
ggplot(df, aes(x = group, y = value))
:ggplot()
:ggplot2の基本関数です。df
:使用するデータフレームを指定します。aes(x = group, y = value)
:aes
は「aesthetic(美学)」の略で、グラフの見た目に関する設定を行います。ここでは、x軸にgroup
列、y軸にvalue
列を使用することを指定しています。
-
geom_bar(stat = "identity", width = 0.8)
:geom_bar()
:棒グラフを描画する関数です。stat = "identity"
:既に集計された値(この場合はvalue
列の値)をそのまま棒の高さとして使用することを指定します。width = 0.8
:棒の幅を指定します。0から1の間の値で、1に近いほど棒は幅広く、0に近いほど細くなります。ここでは、棒の幅を0.8(かなり幅広)に設定しています。
グラフは次のようになります。
width=0.5からwidth=1に変えると次のようなグラフになります。
棒の間隔を調整する
ggplot2
で棒グラフを描く際、個々の棒の間の間隔を直接指定するオプションはありません。棒グラフにおける棒の間隔は、棒の幅(width
引数で設定)によって間接的に決定されます。棒の幅を狭くすると、間隔が広がり、棒の幅を広くすると間隔が狭まります。
ただし、複数のグループにわたる棒グラフ(グループ化された棒グラフ)を描く場合、position_dodge()
関数を使用してグループ内の棒の間隔を調整することができます。以下に例を示します。
library(ggplot2)
# サンプルデータの作成
data <- data.frame(
category = rep(c("A", "B", "C"), times = 2),
value = c(10, 20, 15, 12, 18, 15),
group = rep(c("Group 1", "Group 2"), each = 3)
)
# グループ化された棒グラフで間隔を調整
ggplot(data, aes(x = category, y = value, fill = group)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.5), width=0.4) +
ggtitle("Grouped Bar Graph with Adjusted Spacing") +
xlab("Category") +
ylab("Value")
スクリプトの説明
position = position_dodge(width = 0.5)
:グループ化された棒グラフにおいて、同じカテゴリ内の異なるグループの棒の間隔を調整します。ここでは、棒の間隔を0.5に設定しています。width = 0.4
:個々の棒の幅を指定します。ここでは、棒の幅を0.4に設定しています。
グラフは次のようになります。