タグ:ggplot2

前回の記事ではRでグラフを作るときの特徴やメリットについて紹介しました。


今回はggplot2でグラフ実際に作りながら、基本的な考え方について紹介します。



1.準備

ggplot2パッケージを使うためにはtidyverseパッケージを事前に読み込む必要があります。

library(tidyverse)

今回使うデータは以下のデータを使います。
見慣れない関数もありますが、無視して全て実行していただいて構いません。

set.seed(3) 
性別 <- as.integer(runif(200, 0, 2)) 
年齢 <- as.integer(rnorm(200, 65 , 10) + 性別*10)
身長 <- as.integer(rnorm(200, 165, 10) - 性別*10)
体重 <- as.integer(rnorm(200, 65, 10) - 年齢*0.05)
SIAS <- as.integer(rnorm(200, 45, 5))
SIAS <- ifelse(SIAS<=72,SIAS,72)
SIAS <- ifelse(SIAS<0,0,SIAS)
MMSE <- rnorm(200, 30, 5) -年齢*0.1
MMSE <- as.integer(ifelse(MMSE<=30,MMSE,30))
MMSE <- ifelse(MMSE<0,0,MMSE)
BBS <- rnorm(200, 42,5) -0.05*年齢 +0.15*SIAS -0.04*MMSE 
BBS <- as.integer(ifelse(BBS<=56,BBS,56))
BBS <- ifelse(BBS<0,0,BBS)
lin.pred <- 1 - 1.1*年齢 + 0.6*SIAS + 2.5*BBS - 2.5*MMSE
theta <- exp(lin.pred) / (1 + exp(lin.pred))
歩行 <- rbinom(200, 1, theta)
df <- data.frame(性別,年齢,身長,体重,SIAS,BBS,MMSE,歩行)
df <- df %>% 
  mutate(性別 = factor(.$性別, labels = c("男性","女性")),
         歩行 = factor(.$歩行, labels = c("非自立", "自立")))
head(df)


このデータは【演習1】R初心者が統計をかけるための前準備の流れを復習しますで使ったデータと同じですので、以前ダウンロードされた方はこのデータを使っても構いません。

data01.xlsx 
library(tidyverse)
library(readxl)
df <- read_excel("data01.xlsx", sheet = "日本語")
df <- df %>% 
  mutate(性別 = factor(.$性別, levels = c("男性","女性")),
         歩行 = factor(.$歩行, labels = c("非自立", "自立")))
head(df)




2.Rでグラフを作るときの基本的な流れ

前回の復習ですが、グラフを作る基本的な流れは以下の通りです。

Rのグラフの作り方

①基本情報を先に指定する
  • x軸はこれです、y軸はこれです
  • この群で色分け(グループ分け)します。
②作りたいグラフを指定する
  • (上記で指定した情報を元に)
  • ◯◯図を作ります(散布図、棒グラフ、箱ひげ図など)
  • そのグラフの細かい指定をします(マーカーの大きさなど)
③軸、タイトル、ラベルの指定をする
  • x軸のタイトルはこれ、y軸のタイトルはこれ
  • 凡例はこれ
  • タイトルはこれ
  • フォントはこれ
④その他
  • グループごとにグラフを並べるなど
大切なのは事前にxとyなど事前情報を指定することです。
スクリーンショット 2019-02-26 7.52.58

今回は主に①と②の話を中心にします。



3.目標

今回の記事では身長と体重の散布図を作ります。
横軸が身長で縦軸が体重、性別で色分けします。
併せて回帰直線も引いてみます。

完成図
スクリーンショット 2019-02-26 22.23.35



4.ggplot関数


ggplot2パッケージでグラフを作る関数はggplot関数です
ggplot()
スクリーンショット 2019-02-26 20.51.53


右下のplotビューを見ると灰色で何も書かれていませんがこれであっています。

ggplot関数はグラフの土台を作る関数です。この上に1つずつ情報を付け加えていきます。




5.使うデータの指定

ggplotでグラフを作るのにまず必要な情報はどのデータを使うか?です。


データを指定するのは主に2つの方法があります。

①data=を使う
ggplot(data = df)


②%>%を使う
df %>%
ggplot()
第2章で%>%を使ってデータ集計を行った後にそのままggplotでグラフを作る時は便利です。


6.aes関数

基本情報を指定するのがaes関数です。

基本情報とはx軸やy軸の指定など、グラフを作るのに必要な要素になります。

スクリーンショット 2019-02-26 21.55.53

dfというデータでx軸を身長、y軸を体重、性別で色分けするには以下のようにします。
 ggplot(data = df, aes(x = 身長, y = 体重, color = 性別))
スクリーンショット 2019-02-26 22.19.25

右下に目盛が出てきました。まだ実際のグラフを作っていないので中身はありません。



7.geom_関数

土台の準備ができました。次は土台の上にグラフを重ねていきます。

グラフを作るのはgeom_関数です
スクリーンショット 2019-02-26 22.57.27

グラフにはいくつか特徴があります
  • 統計量(平均・標準偏差・中央値など)がどうなってるか知りたい(差を知りたい)
  • AとBの関係性を知りたい(相関を知りたい)
  • データの分布を知りたい(正規分布、それ以外の分布)
それぞれのグラフにどんな特徴があるかは1つずつ説明していく予定です。


今回は散布図と回帰直線を引きます


散布図はgeom_point関数を使います。
ggplot関数は + で繋ぎます。

ggplot(data = df, aes(x = 身長, y = 体重, color = 性別))+
geom_point()
スクリーンショット 2019-02-26 23.32.46

geom_point関数の中は何も入っていませんが、本来aes関数を指定する必要あります。
ggplot関数で既にaesを指定していると、それ以降に続くgeom_関数はggplot関数で指定したaesの情報を引き継ぎます。


次に回帰直線を + で重ねます。
回帰直線はgeom_smooth関数で、回帰直線を引くにはmethod = lmを指定します。
ggplot(data = df, aes(x = 身長, y = 体重, color = 性別))+
geom_point() +
geom_smooth(method = lm)
スクリーンショット 2019-02-26 23.47.32

グラフが追加されました。細かい設定はそれぞれのグラフの説明で行う予定です。



8.theme_関数(macで文字化けを防ぐ)

macで日本語のデータを使うと□□のように文字化けします。
文字化けしないためにはtheme_関数のbase_family=でフォントを指定します。
今回は游ゴシック(Medium)を使います。windowsだと指定は必要ないかもしれません(未確認)。

ggplot(data = df, aes(x = 身長, y = 体重, color = 性別)) +
geom_point() +
geom_smooth(method = lm) +
theme_gray(base_family = "YuGo-Medium")
スクリーンショット 2019-02-26 22.23.35


これで最初の見本と同じになりました。



まとめ

今回はggplotでグラフを作る基本的な流れを説明しました。

他にも色々なところを変更することができますが徐々に説明していきます。。



第2章では実際にデータを扱い、新しい列を作ったり、条件に合う行を抽出したり、グループ化して集計したりしました。

第3章ではRでグラフを作るを目標にする予定です。

今回はグラフを作る前にそもそも知っておきたいことを紹介します。



ggplot2パッケージ

Rでグラフを作る代表的なパッケージにggplot2というものがあります。

ggplot2はtidyverseパッケージに含まれています。そのため以下のコードでggplot2パッケージも利用可能です。

library(tidyverse)
スクリーンショット 2019-02-26 13.45.36

tidyverseにはグラフ作成のggplot2だけでなく第2章で使ったdplyrパッケージ(%>%, mutate, slice, filter, group_by, summarizeなど)も入っています。

そもそもRにはパッケージを使わなくてもグラフが作れるのですが、ggplot2ではきれいで様々な種類のグラフを作ることができます。「審美的」とも言われるそうです。



Rには初期設定でも基本的なグラフが作れますが、今回はggplot2を使ったグラフで説明します。




RとExcelのグラフは作り方がぜんぜん違う

Excelで「ピボットグラフ」を使ったことなければ、ExcelとRのグラフの作り方はぜんぜん違うものになります。



Excelのグラフの作り方

①事前に作りたいグラフの種類に合わせて表を並べ替える

②表を選択して挿入→グラフ

③軸やタイトル、凡例を調整する


大切なのは事前にグラフを作るのに必要な形にすることで、コピペの嵐に見舞われることがあります。
スクリーンショット 2019-02-25 23.48.20




Rのグラフの作り方

①基本情報を先に指定する
  • x軸はこれです、y軸はこれです
  • この群で色分け(グループ分け)します。
②作りたいグラフを指定する
  • (上記で指定した情報を元に)
  • ◯◯図を作ります(散布図、棒グラフ、箱ひげ図など)
  • そのグラフの細かい指定をします(マーカーの大きさなど)
③軸、タイトル、ラベルの指定をする
  • x軸のタイトルはこれ、y軸のタイトルはこれ
  • 凡例はこれ
  • タイトルはこれ
  • フォントはこれ
④その他
  • グループごとにグラフを並べるなど
大切なのは事前にxとyなど事前情報を指定することです。
スクリーンショット 2019-02-26 7.52.58





Rはグラフを重ね合わせることができる

Rはグラフを作る前にx軸とy軸が何かを指定します。

このメリットの1つにグラフを重ねることができるがあります。

スクリーンショット 2019-02-26 13.27.39

Rでは事前にデータからx軸とy軸を指定しています。そのおかげで、そのx軸,y軸を基準とした棒グラフ+エラーバー+散布図など複数のグラフを重ねることができます。



グラフの拡大・縮小をしてもグラフの形が崩れない

Rのグラフの特徴ですが、グラフを拡大・縮小してもグラフが崩れにくいのが特徴です。

図として保存もできますし、クリップボードにコピーすれば直接Word, Excel, Power Pointへの貼り付けも簡単です。

スクリーンショット 2019-02-26 13.41.19


プログラムさえ作ってしまえば、違うデータでも同じグラフが作れる

Rの大きな特徴としてプログラムを作ってしまえば、データが変わっても同じグラフが作れます。


スクリーンショット 2019-02-26 13.50.39
スクリーンショット 2019-02-26 7.52.17

例えばdata01が今年のデータとして、来年作るdata02で同じグラフを作るとします。

ExcelであればVBAでプログラムでも作らない限り、今年と同じ作業を来年する必要があります。

しかしRであれば上図のdata01をdata02に変えるだけで同じグラフを作ることができます。

しかも列の名前を変えさえしなければ、他の列の追加・削除を行っても影響がありません。

年次報告書などもフォーマットができれば作業効率アップが目指せるかもしれません。


まとめ

今回はRでグラフを作るときのメリットと特徴を紹介しました。

これからの記事ではグラフの特徴や作成について紹介していく予定です。

↑このページのトップヘ