見出し画像

ggplot2 を使ったデータの視覚化

これまでに、データ処理の流れを一通り解説しましたので、続いて、データの視覚化について解説したいと思います。

データを解析する際に必須となるのが、「データの視覚化」です。特に、大きなデータの場合、数値データとして読み込んだだけでは、データの概略も分かりませんし、その先の解析をイメージすることが難しいです。場合によっては、正常に読み込まれたかどうかさえ、確認できないかもしれません。そのためにも、散布図やボックスプロットなどを作成して、データを確認する必要があります。

R では tidyverse パッケージに含まれている ggplot2 を用いて、散布図や、ボックスプロット、グラフの作成など、データを視覚化することができます。(機械学習などで人気の python にも、やはり、matplotlib という視覚化をサポートする強力なライブラリがあります。)

まず、 ggplot2 の基本的な使い方について解説します。

ggplot2 でヒストグラムを作成

ヒストグラムの作成を例に、実際に ggplot2 を使ったコードを紹介します。とりあえず、データは、Sample1 として、R の関数でランダムな数値を100個生成して使用します。rnorm(100) とすると、0を中心に正規分布した数値を発生させることができます。(引数を変更すると、1000個でも、1,000,000個でも生成できます。)

> # 適当なデータを100個生成
> input_data <- tibble("Sample1" = rnorm(100))
> 
> input_data
# A tibble: 100 × 1
   Sample1
     <dbl>
 1 -0.0289
 2 -0.103
 3  0.490
 4 -0.722
 5  1.97
 6 -0.814
 7 -0.615
 8  0.854
 9  1.56
10 -1.06
# … with 90 more rows
# ℹ Use `print(n = ...)` to see more rows

ggplot2 でヒストグラムを作成するには、下記のように書きます。大きく2つのパートから構成されています。1つめの ggplot() は、「どのデータを使用するか」を定義します。2つめの geom_histogram() が、「どのように視覚化するか」です。

> ggplot(input_data, aes(Sample1)) + geom_histogram(bins = 20)

ggplot()に使用するデータを指定

まず、 ggplot() 関数に「使用するデータ全体」と、「どの列を使用するか」を引数として渡します。この場合(= ggplot(input_data, aes(Sample1)))、

「使用するデータ全体」は、 input_data です。使用しない列が含まれていても問題ありません。

「どの列を使用するか」は、Sample1 です。これを aes() で囲んで渡します。少々、この aes の部分が難しいのですが、使っていくうちに慣れてくるかと思います。(aes は、 aesthetic mappings という意味だそうです。美しくマップ するということらしいのですが。)

Aesthetic mappings describe how variables in the data are mapped
to visual properties (aesthetics) of geoms.

help(aes)

geom_histogram() でヒストグラムを作成

ggplot() 関数に + で続ける形で、 geom_histogram() 関数を指定します。この geom_*関数は、視覚化の方法によって異なります。今回は、ヒストグラムなので、 geom_histogram() ですが、ほかにも存在します。

散布図など、単純なプロット図には、 geom_point() を使います。ドットプロットには、 geom_dotplot() がありますし、ボックスプロットには、 geom_boxplot() 、バイオリンプロットには、 geom_violin() を使います。その他の関数は、チートシートを参照してください。

geom_histogram() の引数 bins = 20 は、20個のビンに分けるという意味です。実行すると、新たにウィンドウが開いて、下記のようなヒストグラムが表示されます。

ヒストグラム

ggsave() で画像を保存(dev.offはもう要らない)

表示させたヒストグラムは、 ggsave() 関数で保存できます。引数には、ファイル名を指定します。

ggsave("histogram_sample1.png")

出力形式は、ファイル名の拡張子から自動で判別されます。上記は、".png" としているので、 PNG 形式で保存されます。PDF形式で保存したい場合は、 ggsave("histogram_sample1.pdf") と拡張子を ".pdf" にするだけでよいです。

クラシックな書き方だと、png() 関数でデバイスを指定して、プロットして、dev.off() で閉じるなど面倒でしたが、 ggplot2 では、 ggsave() だけでOKです。


この記事が気に入ったらサポートをしてみませんか?