棒グラフの作成基礎: Rのbarplotとggplot2の活用
棒グラフはデータの比較を視覚的に表現するのに非常に効果的です。この記事では、R言語を使用して棒グラフを作成する二つの方法、barplot 関数と ggplot2 パッケージを紹介します。
barplot関数による棒グラフ
barplot 関数による棒グラフの作成
それではサンプルデータを作成し、棒グラフを作成してみましょう。スクリプトは次のとおりです。
# サンプルデータの作成
heights <- c(3, 5, 7, 8, 4)
# 棒グラフの作成
barplot(heights)
スクリプトを実行すると次のようなグラフが出来上がります。

次のようすると軸の名前付け、棒の色変更、タイトルの追加などができます。
barplot(heights, names.arg=c("A", "B", "C", "D", "E"), col="blue", main="Sample Barplot")

barblot 関数の主な設定項目のリスト
関数は、Rで棒グラフを作成するための基本的な関数です。
barplot
この関数は多くの設定項目を持っており、これによりグラフの表示を細かく調整することができます。以下は、barplot 関数の主な設定項目のリストです。
- height: 必須。棒の高さを指定する数値ベクトルまたは行列。
- width: 各棒の幅を指定する数値ベクトル。
- space: 各棒の間の空白を指定する数値ベクトル。
- names.arg: 各棒の名前を指定するベクトル。
- legend.text: 凡例のテキスト。行列の各列に対応するテキストを指定する。
- beside:
TRUEの場合、行列の列が並列に描画される。 - horiz:
TRUEの場合、棒グラフを水平に描画する。 - density: 棒の塗りつぶしの密度を指定する数値ベクトル。
- angle: 棒の塗りつぶしの角度を指定する数値ベクトル。
- col: 棒の色を指定するベクトル。
- border: 棒の境界線の色を指定する。
- main: グラフの主タイトル。
- xlab: x軸のラベル。
- ylab: y軸のラベル。
- xlim: x軸の範囲。
- ylim: y軸の範囲。
- xpd: 描画範囲の拡大を許可するかどうか。
- log: 'x'、'y'、'xy'のいずれかを指定して、対数軸を適用する。
- axes:
TRUEの場合、軸を描画する。 - axisnames:
TRUEの場合、軸の名前を描画する。 - cex.axis: 軸のラベルの拡大率。
- cex.names: 名前の引数の拡大率。
- inside:
TRUEの場合、塗りつぶしのラインを棒の内側に描画する。 - plot:
FALSEの場合、グラフを描画せず、棒の位置を計算するだけ。 - axis.lty: 軸線の種類。
これらの設定項目を組み合わせることで、様々なスタイルの棒グラフを作成することができます。詳細な情報や追加のオプションは、Rのヘルプシステム(?barplot または help(barplot) を使用)で確認することができます。
ggplot2による棒グラフ
ggplot2 はより洗練されたグラフを作成できるパッケージです。多様なカスタマイズが可能で、プロフェッショナルなデータ可視化に適しています。
インストールと読み込み
ggplot2がインストールされていない方は次のスクリプトでインストールしてください。
install.packages("ggplot2")
library(ggplot2)
基本的な棒グラフの作成
スクリプトは次のとおり。
# データフレームの作成
df <- data.frame(
category = c("A", "B", "C", "D", "E"),
value = c(3, 5, 7, 8, 4)
)
# ggplotを使用した棒グラフ
ggplot(df, aes(x=category, y=value)) + geom_bar(stat="identity")
スクリプトについて説明を加えていきます。
-
ggplot(df, aes(x=category, y=value)):ggplot:ggplot2パッケージの主要な関数で、グラフの基本となるオブジェクトを作成します。df: この関数に渡されるデータフレームです。ここではdfという名前のデータフレームを使用しています。aes(x=category, y=value):aesは aesthetic(美学)の略で、グラフの見た目に関する設定をします。ここでは、x=categoryとy=valueを指定して、x軸にcategory列、y軸にvalue列を使用することを指定しています。
-
+ geom_bar(stat="identity"):+:ggplot関数で作成されたグラフオブジェクトに、追加の要素やレイヤーを加えるための演算子です。geom_bar: 棒グラフを描画するためのgeom(幾何オブジェクト)の一種です。stat="identity":geom_barのデフォルトの動作は、指定された列の値の数を数え上げて棒グラフを描画することですが、stat="identity"を設定することで、データフレーム内の値(この場合value列)をそのまま棒の高さとして使用します。これにより、データフレームの各行のvalue列の値に基づいた棒グラフが描画されます。
スクリプトを実行すると次のようなグラフが出来上がります。

各種設定
次のように入力すると軸ラベル、図のテーマ、色の設定などが可能です。
ggplot(df, aes(x=category, y=value, fill=category)) +
geom_bar(stat="identity") +
labs(title="Sample Barplot with ggplot2", x="Category", y="Value") +
theme_minimal()
スクリプトを実行すると次のようなグラフが完成します。

先ほどのスクリプトについて解説を加えていきます。
-
ggplot(df, aes(x=category, y=value, fill=category)):ggplot:ggplot2の基本関数で、グラフの基礎となるオブジェクトを作成します。df: この関数に渡されるデータフレーム。ここではdfという名前のデータフレームを使用しています。aes(x=category, y=value, fill=category):aesは aesthetic(美学)の略で、グラフの見た目に関する設定を行います。x=categoryとy=valueで、x軸とy軸に何を配置するかを指定し、fill=categoryで、棒の塗りつぶしの色をカテゴリごとに変えることを指定しています。
-
geom_bar(stat="identity"):geom_bar: 棒グラフを描画するためのgeom(幾何オブジェクト)の一種です。stat="identity": 通常geom_barはカテゴリの頻度をカウントしますが、stat="identity"を使うと、データフレームのvalue列の値を直接棒の高さとして使用します。
-
labs(title="Sample Barplot with ggplot2", x="Category", y="Value"):labs: グラフのラベルをカスタマイズする関数です。title="Sample Barplot with ggplot2": グラフのタイトルを設定します。x="Category"とy="Value": x軸とy軸のラベルをそれぞれ "Category" と "Value" に設定します。
-
theme_minimal():theme_minimal: グラフのテーマをシンプルかつ洗練されたデザインに設定する関数です。余計な線や背景色を取り除いて、グラフのデータがより際立つようにします。
このコマンド全体で、df データフレームを使って、カテゴリごとに異なる色で塗りつぶされた棒グラフを作成します。各棒は category の値に基づいてx軸に配置され、その高さは value 列の数値によって決定されます。さらに、グラフにはタイトルと軸ラベルが追加され、全体のデザインは theme_minimal でシンプルに保たれます。
ggplot2の設定項目の概要
ggplot2 は非常に包括的で柔軟性の高いグラフィックスパッケージで、多くの設定項目があります。しかし、その全てを一度に紹介するのは非現実的なため、主要な概念とコンポーネントの概要を以下に示します。
1. ggplot() 関数と基本構造
ggplot(data = <データフレーム>, aes(<マッピング>)): 基本的なグラフオブジェクトを作成します。データセットを指定し、aes()関数で変数のマッピング(例えば、x軸とy軸に使用する変数)を設定します。
2. レイヤー: ジオメトリ(geom_*)
geom_*(): データをグラフィカルに表現するためのレイヤー。例えばgeom_bar()、geom_line()、geom_point()などがあります。各ジオメトリには独自の設定オプションがあります。
3. スケール: 視覚的マッピングの調整(scale_*)
scale_*(): 色、形、サイズなどの視覚的要素のスケールを調整します。例えばscale_color_manual()やscale_x_continuous()などがあります。
4. 統計変換: データの集計や変換(stat_*)
stat_*(): データを集計または変換するための関数。多くのgeom_*関数は内部的にstat_*関数を使用します。
5. 座標系: 座標軸の調整(coord_*)
coord_*(): グラフの座標系を調整します。例えばcoord_flip()で軸を反転させたり、coord_polar()で極座標系を使用したりします。
6. ファセット: データの分割表示(facet_*)
facet_*(): データをサブセットに分割し、それぞれを別のプロットとして表示します。facet_wrap()やfacet_grid()などがあります。
7. テーマ: 外観のカスタマイズ(theme() と theme_*())
theme(): グラフの全体的な外観をカスタマイズします。フォント、色、ラインタイプ、プロットのマージンなどを調整できます。theme_*(): 事前定義されたテーマ(例:theme_minimal()、theme_classic())。
8. アノテーション: テキストや線の追加(annotate())
annotate(): グラフに固定テキストや図形、線などを追加します。
9. ラベル: タイトル、軸ラベル、凡例(labs() と guides())
labs(): タイトル、軸ラベル、凡例のテキストを設定します。guides(): 凡例の表示方法をカスタマイズします。
これらは ggplot2 の主要なコンポーネントですが、パッケージはこれらに加えて多くの追加機能を提供しています。各機能の詳細については、Rのヘルプシステム(?ggplot2 または help(ggplot2))や ggplot2 の公式ドキュメントでさらに学ぶことができます。