14 ggplot2を用いたデータの可視化

14.1 概要

14.2 はじめに:ggplot2について

14.2.1 データ可視化とggplot2

数値が羅列されたデータから、その特徴や傾向を読み取ることは容易ではありません。データ可視化は、データに含まれるパターンや関係性を視覚的に表現することで直感的な理解を助けるための手法です。

R言語には多数の作図パッケージが存在しますが、ggplot2は最もよく利用されています。ggplot2は、一貫した文法に基づいて、柔軟かつ再現性の高いグラフ作成を可能にする点が特徴です。このページでは、ggplot2を用いたデータ可視化の基本的な手順を解説します。

14.2.2 グラフの文法 (Grammar of Graphics)

ggplot2は、「グラフの文法 (Grammar of Graphics)」という思想に基づいています。これは、「グラフを構成する要素を個別の部品(レイヤー)として定義し、それらを体系的に積み重ねて作図を行う」という考え方です。

グラフは主に以下の3つの基本要素から構成されます。

  • データ (data): グラフ化する対象のデータセット。
  • マッピング (aes): データの変数を、X軸、Y軸、色、サイズといったグラフの視覚的要素にどのように対応させるかの設定。
  • ジオメトリ (geom): 点、線、棒といった、データを表現するための図形の指定。

これらの要素を + 記号で結合していくことでグラフを構築するというのが ggplot2 の基本的な操作です。この構造を用いることで、単純なグラフから複雑なグラフまで、統一的な形式でグラフを作成することができます。

14.3 準備

14.3.1 必要なパッケージのインストールと読み込み

ggplot2 を利用するには、まずパッケージを R にインストールし、そして現在の作業セッションに読み込む必要があります。今回は、作図に用いる ggplot2 パッケージと、サンプルデータが含まれる palmerpenguins パッケージを準備します。

パッケージのインストールは、Rを使い始める際に一度だけ行えば十分です。以下のコマンドを RStudio の Console で実行してください。

install.packages(c("ggplot2", "palmerpenguins"))

インストールが完了したら、Rのセッション(RSTudioを起動するたびに新しいセッションになります)を開始するごとにlibrary()関数を使ってパッケージを読み込みます。これにより、パッケージ内の関数やデータが利用可能になります。

library(ggplot2)
library(palmerpenguins)

これらのlibrary()関数はスクリプトの冒頭に記載するのがよいでしょう。

14.3.2 penguinsデータセット

このページの解説では、palmerpenguins パッケージに含まれる penguins データセットを使用します。このデータセットには、南極のパーマー群島に生息する3種類のペンギン(アデリー、ジェンツー、ヒゲ)の様々な測定データが格納されています。

データセットの最初の数行を確認するにはhead()関数を、全体の構造や各列のデータ型を確認するにはstr()関数を使用します。

library(palmerpenguins)

# データセットの先頭6行を表示
head(penguins)
## # A tibble: 6 × 8
##   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
##   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
## 1 Adelie  Torgersen           39.1          18.7               181        3750
## 2 Adelie  Torgersen           39.5          17.4               186        3800
## 3 Adelie  Torgersen           40.3          18                 195        3250
## 4 Adelie  Torgersen           NA            NA                  NA          NA
## 5 Adelie  Torgersen           36.7          19.3               193        3450
## 6 Adelie  Torgersen           39.3          20.6               190        3650
## # ℹ 2 more variables: sex <fct>, year <int>

# データセットの構造を表示
str(penguins)
## tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
##  $ species          : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ island           : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ bill_length_mm   : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
##  $ bill_depth_mm    : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
##  $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
##  $ body_mass_g      : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
##  $ sex              : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
##  $ year             : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...

上記のstr()の結果から、このデータセットには数値型 (num, int) の変数と、カテゴリを表現する因子型 (Factor) の変数が含まれていることがわかります。

Console で以下の命令を実行すれば penguins データセットの中身が表形式で確認できます。

View(penguins)

しかし、このような数字の表からではこのデータにどのような特徴があるのかはよくわかりません。図を作成することでデータの持つ特徴が明らかになります。