ggplot2によるデータ可視化
Kanazawa.R #1
伊東宏樹
2024-06-29
内容
ggplot2パッケージの紹介
ggplot2でグラフを描く
Rのグラフィック環境
よく使われるのは2つ
その他、plotlyとかも
ggplot2パッケージ
gg = Grammar of Graphics
統一された文法でグラフを描くことができる
インストール
ふつうにCRANからインストール(RStudioではTools > Install Packages… でも)
install.packages("ggplot2")
データ
3種のアヤメの花の形態データ(萼の長さ・幅、花弁の長さ・幅)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
ggplot関数
ggplot
関数だけで、空のグラフを作成
グラフを描きたいデータフレームをdata
引数として与える
データのマッピング
mapping
引数にaes
関数を指定して (aes = aesthetic mappings)、どの軸にどの変数を割り当てるかを決める
ggplot(data = iris,
mapping = aes(x = Sepal.Width, y = Sepal.Length))
geom_pointで散布図グラフ
“+”演算子で要素を加えていく
geom_* = geometric object: データの描画方法を指定するレイヤー
ggplot(data = iris,
mapping = aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point()
こうしても同じ
geom_*
関数の方でmapping
引数を指定することもできる(実はdata
引数も)
ggplot(data = iris) +
geom_point(mapping = aes(x = Sepal.Width, y = Sepal.Length))
種ごとに色分け
aes
関数のcolour
引数(color
でも可)にSpecies
を指定すると、Species
の種類ごとに点の色が変わる
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species))
形を変える
shape
引数にSpecies
を指定すると、Species
の種類ごとに点の形が変わる
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species))
サイズを変える
size
引数に倍率を指定(aes
関数の外で)
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species),
size = 3)
点を半透明に
alpha
(不透明度)を指定すると、点を半透明にできる
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species),
alpha = 0.7, size = 3)
配色を変える
scale_colour_manual
関数で色を直接指定できる
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species),
alpha = 0.7, size = 3) +
scale_colour_manual(values = c("#E69F00", "#56B4E9", "#D55E00"))
軸ラベルの設定
labs
関数でラベルを指定できる
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species),
alpha = 0.7, size = 3) +
scale_colour_manual(values = c("#E69F00", "#56B4E9", "#D55E00")) +
labs(x = "Sepal width (cm)", y = "Sepal length (cm)")
グラフをオブジェクトに代入
p <- ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species),
alpha = 0.7, size = 3) +
scale_colour_manual(values = c("#E69F00", "#56B4E9", "#D55E00")) +
labs(x = "Sepal width (mm)", y = "Sepal length (mm)")
plot
で表示(print
でも可)
テーマを変える
theme_*
関数でテーマを切り替えられる
さらに別のテーマ
ggthemesパッケージにいろいろなテーマあり
library(ggthemes)
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species), size = 3) +
labs(x = "Sepal width (mm)", y = "Sepal length (mm)") +
scale_color_excel() + theme_excel()
回帰直線を加える
ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +
geom_point(aes(colour = Species, shape = Species),
alpha = 0.7, size = 3) +
geom_smooth(formula = y ~ x, aes(colour = Species), method = lm) +
labs(x = "Sepal width (mm)", y = "Sepal length (mm)")
グラフを保存する
ggsave
関数でグラフをファイルに保存できる
ggsave(filename = file.path("figures", "plot.png"),
device = png, width = 12, height = 8, units = "cm")
デフォルトでは直前に表示したグラフ
ファイル形式はPNGのほか、TIFF, BMP, PDF, SVGなど
オブジェクトに代入しておいたグラフの保存もできる
ggsave(filename = file.path("figures", "plot2.png"),
plot = p,
device = png, width = 12, height = 8, units = "cm")
別の種類のグラフ
geom_line: 折れ線グラフ
geom_boxplot: 箱ヒゲ図
geom_histogram: ヒストグラム
geom_bar: 棒グラフ
などなど
さらに知るには
キーラン・ヒーリー 著 瓜生真也・江口哲史・三村喬生 訳, 講談社
Hadley Wickham, Danielle Navarro, and Thomas Lin Pedersen 著
オンライン版は無料