SlideShare a Scribd company logo
1 of 56
Rでデータを可視化する
@koriakane
Tokyo.R #66
自己紹介
• 宮﨑(@koriakane)
• Tokyo.R運営チーム所属(会計、調整、諸々)
• SIerで分析(+前段階のコンサル)をしてました
• 近況:昨日最終出社日でした
この資料のターゲット
• R初心者(初心者セッションなので!)
• 「そうだ、R、やろう」と思い立ったくらい
• ワテクシのように、分析をして、その結果を
報告書(pptとか)に記載する必要のある方
• 「R上で可視化がしたいんだ!」という方
例えば
Rでの分析結果を
• PPTにまとめていきます
• グラフ(プロット)も貼り付けていきます
すると
と言われがち
たいていの場合
• 自分が分析結果を確認するためのプロットと、人(
顧客)に見せる用のプロットは、違うもんだ、と思
っておいた方が身のため
• だがしかし、いちいち「えくせる」とか「ぱわー
ぽいんと」で描き直すのはめんどくさい
• とはいえ、分析結果報告書は「えくせる」とか「
ぱわーぽいんと」で書かざるを得ない(場合が私
は多かった)
Rでそれっぽく可視化して、
貼り付ければええやん!
Rで可視化する、といえば?
• plot()←何も考えずに実施しても何かしら出る
• hist()←ヒストグラムを出す
• barplot()←棒グラフを出す
• matplot()←折れ線グラフを出す
• boxplot()←箱ひげ図を出す
Rで可視化する、といえば?
• こんな感じ
plot(iris$Species) hist(iris$Sepal.Length)
簡単
まぁ、見栄え良くはない
それっぽく可視化するには
• ワテクシはよくggplot2を使います
• ggplot2:キャンバスを用意して、重ね書きし
ていくイメージで、プロットを作成すること
ができる
→カスタマイズが楽
→見栄え良くそれっぽいプロットが作れる
ggplot2で可視化する
• データの基本条件
1. データ型がdata.frame
2. 全ての列で行数が同じ
3. カテゴリ変数がある場合、全ての行に
対して、何かしらのカテゴリに属して
いることがわかるデータがある
• 上記3つを満たしていれば、何とかなります
こんな感じ
• みんなだいすきiris
> str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 …
> anyNA(iris)
[1] FALSE
data.frame
カテゴリ変数があり、各行が何かしらのカテゴリに属している
NAなし
いざ、実践
(まずはヒストグラム)
これを
ggplot(data = iris, aes(x = Sepal.Length))
こうやって
ggplot(data = iris, aes(x = Sepal.Length)) +
geom_histogram()
こうじゃ
ggplot(data = iris, aes(x = Sepal.Length)) +
geom_histogram(aes(fill=Species),
bins=30, alpha=0.5)
もういっこいっとく
(まずは散布図)
これを
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
こうやって
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point()
こうじゃ
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(aes(colour = Species))
それっぽい
何をやっているか
ggplot(data = iris, aes(x = Sepal.Length))
プロットに使う列名を指定する
プロットに使うdata.frameを
指定する
何をやっているか
ggplot(data = iris, aes(x = Sepal.Length)) +
geom_histogram()
プロットの種類を指定する
何をやっているか
ggplot(data = iris, aes(x = Sepal.Length)) +
geom_histogram(aes(fill=Species),
bins=30, alpha=0.5)
ヒストグラムを塗る色の色分けに使う列
名を指定する
もろもろ調整する
(bins:区切り、alpha:透過度)
同様に散布図も描けます
ggplot(data = iris,
aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(aes(colour = Species)) プロットに使う列名を指定する
(散布図なので、x軸とy軸が必要)
プロットに使うdata.frameを
指定する
点の色分けに使う列名を指定する
ちなみに、こう書いてもOK
ggplot(data = iris,
aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point()
こう書くと、+以降のプロット全てに
色分けが適用される
さっきから出てるaes()って、
何
aesとは
• data.frameのどの列を、プロットのどの要素に
対応させるのか、をマッピングするもの
• 詳しくは、偉大なるユタニさんのスライドを
参考にしましょう
• https://speakerdeck.com/yutannihilation/ggplot2zai-ru-men
x x軸
y y軸
colour 点や線の色
fill 塗りの色
どんなプロットの種類があるか
?
• ヒストグラム → geom_histgram()
• 散布図 → geom_point()
• 棒グラフ → geom_bar()
• 折れ線グラフ → geom_line()
• 箱ひげ図 → geom_boxplot()
• etc.
それっぽいものが作れました
• あとは、画像ファイルにして、PPTに貼り付け
ていけばOK
• RStudioであれば、Export > Save as Imageで
できます
それでもまだ言われたりする
その1
Colour Pickerを使いましょう
• colour pickerアドインを使えば、色を表示しな
がら必要な色を選択し、イメージにあったカ
ラーセットを作成することが可能です。
そもそもアドインって、何
• アドイン = RStudioアドインの意です
• ボタン一つで実行したり、GUI操作で処理でき
たりします
• 詳しくは、公式ドキュメントをチェックしま
しょう
• http://rstudio.github.io/rstudioaddins/
Colour Pickerを使いましょう
• RStudioで、colourpickerパッケージをインスト
ールすると、「Addins」というボタンから、
Colour Pickerアドインを使用することができ
ます。
選択した色を適用します
colors <- c("#00C5CD", "#D02090", “#828282")
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
scale_colour_manual(values = colors)
色分けの指定
※色分けしているパラメータが、
colourかfillかで変わります
その2
facet_wrap()を使いましょう
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
scale_colour_manual(values = colors) +
facet_wrap(~Species, ncol = 3)
~:分割に使用するカテゴリ変数の指定
ncol:横に幾つ並べるか
facet_wrap()を使いましょう
• scale = “free”で、分割された各プロット毎に、
軸の目盛りを調整できます。
facet_wrap(~Species) facet_wrap(~Species,
scale = “free”)
その3
①geom_vline()を使いましょう
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
scale_colour_manual(values = colors) +
geom_vline(xintercept = 7,
size = 1.5,
linetype = 2,
colour = "#32CD32")
xintercept:x軸の値
size:線の太さ
linetype:線の種類
colour:色の指定
②geom_hline()を使いましょう
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
scale_colour_manual(values = colors) +
geom_hline(yintercept = 3.5,
size = 1.5,
linetype = 4,
colour = “#7D26CD")
yintercept:x軸の値
size:線の太さ
linetype:線の種類
colour:色の指定
その4
①xlab()、ylab()を使いましょう
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
scale_colour_manual(values = colors) +
theme_grey(base_family = "HiraKakuProN-W3") +
xlab("がく片の長さ") +
ylab(“がく片の幅")
Macでggplotの出力結果に
日本語を使用する場合は必要
②labs()でもできます
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
scale_colour_manual(values = colors) +
theme_grey(base_family = "HiraKakuProN-W3") +
labs(x = "がく片の長さ", y = "がく片の幅")
ついでに凡例も直しましょう
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width,
colour = Species)) +
geom_point() +
theme_grey(base_family = "HiraKakuProN-W3") +
labs(x = "がく片の長さ", y = "がく片の幅") +
scale_colour_manual(values = colors,
name = "アヤメの品種",
labels = c(setosa = "ヒオウギアヤメ",
versicolor ="ハナショウブ",
virginica = "カキツバタ") )
できた
他にも色々できます
知りたい方は
• 公式ドキュメントを参考にしましょう
• http://ggplot2.tidyverse.org/
• チートシートもあります
• https://www.rstudio.com/resources/cheatsheets/
• https://www.rstudio.com/wp-
content/uploads/2016/10/ggplot2-cheatsheet-2.0-ja.pdf (
日本語版)
知りたい方は
• 偉大なるユタニさんのスライド
• https://speakerdeck.com/yutannihilation/ggplot2zai-ru-men
• 偉大なるうなどんさんのハンズオン資料
• https://mrunadon.github.io/%E6%A6%82%E8%A6%81%E3%82%92
%E3%81%8A%E3%81%95%E3%81%88%E3%81%A6ggplot2%E3
%82%92%E4%BD%BF%E3%81%84%E3%81%93%E3%81%AA%
E3%81%99%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88
%E3%83%AA%E3%82%A2%E3%83%AB%E3%81%A8%E3%82%
B3%E3%83%BC%E3%83%89%E9%9B%86/#content
• https://www.slideshare.net/MrUnadon/hands-on-ggplot2
分からないことがあれば
• r-wakalangで質問しましょう
• 素晴らしきお兄さま、お姉さまが答えてくれるかも
• #ggplot2チャンネルもあります
• https://qiita.com/uri/items/5583e91bb5301ed5a4ba
Enjoy !!

More Related Content

Similar to Tokyo.R #66 初心者セッション3

RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)Takashi Minoda
 
HiroshimaR6_Introduction
HiroshimaR6_IntroductionHiroshimaR6_Introduction
HiroshimaR6_IntroductionSAKAUE, Tatsuya
 
サービス改善はログデータ分析から
サービス改善はログデータ分析からサービス改善はログデータ分析から
サービス改善はログデータ分析からKenta Suzuki
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化Shinichi Nakagawa
 
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using RHow to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using RSatoshi Kato
 
Adobe Fireworks CS6 使いこなしテクニック
Adobe Fireworks CS6 使いこなしテクニックAdobe Fireworks CS6 使いこなしテクニック
Adobe Fireworks CS6 使いこなしテクニックMori Kazue
 
BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法Haruo Sato
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークMaehana Tsuyoshi
 
WP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura TahWP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura TahTakashi Kitamura
 
トレノケ雲の会 mod.2「雲の通ひ路」 LT
トレノケ雲の会 mod.2「雲の通ひ路」 LTトレノケ雲の会 mod.2「雲の通ひ路」 LT
トレノケ雲の会 mod.2「雲の通ひ路」 LTmokudai masayuki
 
GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」
GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」
GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」エピック・ゲームズ・ジャパン Epic Games Japan
 
GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games Japan
GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games JapanGTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games Japan
GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games JapanGame Tools & Middleware Forum
 
大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06
大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06
大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06俊仁 小林
 
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)Shinichi Nakagawa
 
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップアジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップYou&I
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learningRetrieva inc.
 
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudyはじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudyShinichi Nakagawa
 
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?なべ
 

Similar to Tokyo.R #66 初心者セッション3 (20)

RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)
 
HiroshimaR6_Introduction
HiroshimaR6_IntroductionHiroshimaR6_Introduction
HiroshimaR6_Introduction
 
サービス改善はログデータ分析から
サービス改善はログデータ分析からサービス改善はログデータ分析から
サービス改善はログデータ分析から
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
 
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using RHow to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
 
Adobe Fireworks CS6 使いこなしテクニック
Adobe Fireworks CS6 使いこなしテクニックAdobe Fireworks CS6 使いこなしテクニック
Adobe Fireworks CS6 使いこなしテクニック
 
BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法
 
Python勉強会 2015-12-02
Python勉強会 2015-12-02Python勉強会 2015-12-02
Python勉強会 2015-12-02
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
WP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura TahWP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura Tah
 
トレノケ雲の会 mod.2「雲の通ひ路」 LT
トレノケ雲の会 mod.2「雲の通ひ路」 LTトレノケ雲の会 mod.2「雲の通ひ路」 LT
トレノケ雲の会 mod.2「雲の通ひ路」 LT
 
GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」
GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」
GTMF2016「Unreal Engine 4で高品質なVRコンテンツを 制作するために知っておきたい100のテクニック」
 
GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games Japan
GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games JapanGTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games Japan
GTMF 2016:Unreal Engine 4で高品質なVRコンテンツを制作するために知っておきたい100のテクニック Epic Games Japan
 
大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06
大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06
大規模JSプロジェクト ロードオブナイツの管理手法紹介 2012-11-06
 
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
 
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップアジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
 
Hiroshimar4_Rintro
Hiroshimar4_RintroHiroshimar4_Rintro
Hiroshimar4_Rintro
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learning
 
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudyはじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
はじめてのLean Canvas〜最初のアイディアを言語化してみよう #bpstudy
 
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
 

Tokyo.R #66 初心者セッション3