こんにちは,shun(@datasciencemore)です!
今回は可視化についてです.
可視化は,データ分析をするうえで最重要といっても過言ではないくらい重要です.
可視化ができるとデータの傾向を把握することが容易になるからです.
可視化についてじっくり学んでいきましょう.
0.ggplot2ってなに??
可視化はデータをグラフにすることだよ.
データをグラフにすることで,そのデータがどんな傾向があるのか把握しやすくなるんだ!
次の図を見てください.
左がデータフレームで右がそれを可視化してグラフにしたものです.
どちらが傾向がわかりやすいか一目瞭然ですね!
Rでは,可視化をするのに様々な方法がありますが,その中のデファクトスタンダードがggplot2です.
ggplot2は,統一的な文法できれいなグラフが簡単に書けるからだよ.
あと,情報が多いこともメリットだね.
どんなグラフでも,分割すると以下の3つの要素に分割できます.
1.キャンバス
2.グラフ
3.体裁
これらをレイヤーとして,ひとつずつ重ね合わせることで全体のグラフを作成します.
そうですよね笑
さっそくイメージを見てみましょう.
イメージにするとよくわかると思います.
要は,全体のグラフを①キャンパス,②グラフ,③体裁のいずれかのレイヤーに分割し,それぞれのレイヤーで書いた後,重ね書きをすることで全体のグラフを構成しています.
それでは,それぞれのレイヤーの挙動を実例を交えてみていきましょう.
1.キャンパス
まずは,キャンパスを準備します.
今回は,x軸にSepal.Length,y軸にPetal.Lengthを設定します.
1 2 3 4 5 |
# 1.キャンパス ggplot( data = iris, mapping = aes(x = Sepal.Length, y = Petal.Length) ) |
x軸とy軸がセットされました.
このキャンパスにいろいろなグラフを書いていきます.
パッケージの名前はggplot2ですが,コーディングするときはggplotと書きます.
ややこしいですね...
なんでこんなことになったのかは詳しくは知りませんが,どうも昔ggplotという別のパッケージがあったみたいですね.
ただ,そんなことはどーでもいいです.
パッケージの名前については,正式名称で呼ばれることはほとんどなく,ggplotって呼ばれることが多いです.
なので,このブログでも基本はggplot2のことをggplotって呼んでいきます.
2.グラフ_1
グラフ_1として,散布図を書いてみましょう.
といってもめっちゃ簡単です笑
用意したキャンパスにたった1行geom_point()と加えるだけです!
geom_point()というのは,散布図書いてくださいねっていう意味です.
ggplot2には,散布図以外にも様々な種類の図があるので,一つずつ覚えていきましょう.
1 2 3 4 5 6 7 |
# 1.キャンパス ggplot( data = iris, mapping = aes(x = Sepal.Length, y = Petal.Length) ) + # 2.グラフ_1 geom_point() |
さ,どんどんいきましょう!
2.グラフ_2
グラフ_2として,散布図に対しての回帰直線を引いてみます.
回帰直線は,geom_smooth()で描くことができます.
1 2 3 4 5 6 7 8 9 |
# 1.キャンパス ggplot( data = iris, mapping = aes(x = Sepal.Length, y = Petal.Length) ) + # 2.グラフ_1 geom_point() + # 2.グラフ_2 geom_smooth(method = "lm", se = FALSE) |
回帰直線も引けました!
geom_smooth(method = "lm", se = FALSE)のかっこの中身は今は気にしなくてOKです.
3.体裁
さっ,いよいよ,最後の仕上げです.
ここでは,例として以下の体裁を適用したレイヤーを重ね合わせてみましょう.
①背景の色をピンクにする.
②外枠をオレンジにする.
③x軸,y軸の文字を小さくする.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 1.キャンパス ggplot( data = iris, mapping = aes(x = Sepal.Length, y = Petal.Length) ) + # 2.グラフ_1 geom_point() + # 2.グラフ_2 geom_smooth(method = "lm", se = FALSE) + # 3.体裁 theme( panel.background = element_rect(fill = 'pink', colour = 'orange', size = 5), axis.text = element_text(size = 15), axis.title = element_text(size = 15) ) |
うまくできましたね!
これで,全体のグラフが描けました.
かなり前の【R前処理講座9】の4.関数の外部ファイル化にて.Rprofileを以下のように設定したのを覚えているでしょうか??
1 2 3 4 5 6 7 8 |
library(stats) library(tidyverse) library(GGally) library(patchwork) theme_set(theme_linedraw(base_size = 25, base_family = "Helvetica")) source("my_functions.R", encoding = "utf8") |
これのtheme_set(theme_linedraw(base_size = 25, base_family = "Helvetica"))の部分は,実はggplotの体裁を定義していたのです!
実務ではグラフはめっちゃ重要なので,何回も可視化のコードを書くのですが,そのたびにいちいち体裁のコードを書くのは非常にだるいですよね.
なので,.Rprofileに自分の好きな体裁を最初に定義しておくことで,いちいち体裁のコードを書く必要がなくなるのです.
常に効率化していきましょ♪
まとめ
今回も重要なことが盛りだくさんで大変でしたね...
可視化はデータサイエンティストの業務でめっちゃ使います.
たくさん練習してサクッと書けるようになっちゃいましょう!
ここで,一つ注意.
ggplot2の関数は膨大であるため,全部覚えることは不可能です!!!
なので,必要に応じてググってコードを書いていきましょう.
実際,僕も詳細については覚えていないです.
大事なことは,今まで説明してきた
レイヤーごとに書いて,それを重ね合わせると全体のグラフになる!!
ということです.
このイメージを常に忘れないでください.
次回はこのggplotを使用して実務に頻出のグラフを書く予定です.
それじゃ,お疲れ様でした!!