library(tidyverse)ggplot2による可視化
1 ggplot2とは
ggplot2は,Rで最も広く使われている可視化パッケージです.グラフィックの文法(Grammar of Graphics)に基づいて,データ,座標軸,幾何学的オブジェクト(点,線など)を組み合わせてグラフを構築します.
2 ggplot2の基本構造
ggplot2のグラフは,以下の要素を+で重ねて構築します.
ggplot():データとエステティクス(aes)の指定geom_*():幾何学的オブジェクトの追加- ラベル・テーマ等の調整
wagedata <- read_csv("wage.csv", show_col_types = FALSE)2.1 散布図
ggplot(wagedata, aes(x = educ, y = wage)) +
geom_point()
パイプ演算子を使って書くこともできます.
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point()3 主なgeom_*()関数
3.1 geom_point():散布図
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point()
3.2 geom_line():折れ線グラフ
wagedata %>%
group_by(educ) %>%
summarize(mean_wage = mean(wage)) %>%
ggplot(aes(x = educ, y = mean_wage)) +
geom_line() +
geom_point()
3.3 geom_histogram():ヒストグラム
wagedata %>%
ggplot(aes(x = wage)) +
geom_histogram(bins = 30)
3.4 geom_bar():棒グラフ
wagedata %>%
ggplot(aes(x = factor(educ))) +
geom_bar()
3.5 geom_boxplot():箱ひげ図
wagedata %>%
ggplot(aes(x = factor(educ), y = wage)) +
geom_boxplot()
3.6 geom_smooth():回帰直線の追加
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point() +
geom_smooth(method = "lm")
method = "lm"を指定すると線形回帰の直線が描かれます.指定しない場合はLOESS曲線が描かれます.
3.7 geom_hline(),geom_vline():水平線・垂直線
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point() +
geom_hline(yintercept = mean(wagedata$wage), linetype = "dashed", color = "red")
4 エステティクス(aes)
aes()の中で,データの変数を色,大きさ,形状などの視覚的属性に対応づけることができます.
4.1 色分け
wagedata %>%
mutate(college = ifelse(educ >= 16, "大卒以上", "大卒未満")) %>%
ggplot(aes(x = exper, y = wage, color = college)) +
geom_point()
4.2 ファセット
facet_wrap()を使うと,グループごとにパネルを分けて描画できます.
wagedata %>%
mutate(college = ifelse(educ >= 16, "大卒以上", "大卒未満")) %>%
ggplot(aes(x = exper, y = wage)) +
geom_point() +
facet_wrap(~ college)
5 軸ラベルとタイトル
xlab(),ylab(),ggtitle()で軸ラベルやタイトルを設定します.labs()を使えば一括で指定できます.
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point() +
labs(
x = "教育年数",
y = "賃金",
title = "教育年数と賃金の関係"
)
6 表示範囲の設定
coord_cartesian()を使うと,グラフの表示範囲を変更できます.
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point() +
coord_cartesian(xlim = c(10, 18), ylim = c(0, 1500))
7 テーマ
ggplot2にはいくつかの組み込みテーマがあります.
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
geom_point() +
theme_minimal()
主なテーマにはtheme_gray()(デフォルト),theme_bw(),theme_minimal(),theme_classic()などがあります.
8 stat_summary():要約統計量の可視化
stat_summary()を使うと,グループごとの要約統計量を直接グラフに描くことができます.
wagedata %>%
ggplot(aes(x = educ, y = wage)) +
stat_summary(geom = "point", fun = "mean") +
stat_summary(geom = "line", fun = "mean")
9 グラフの保存
ggsave()関数でグラフをファイルに保存できます.
p <- ggplot(wagedata, aes(x = educ, y = wage)) +
geom_point()
ggsave("scatter.png", plot = p, width = 6, height = 4)