Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tokyo.R #97 Data Visualization
Search
kilometer
March 19, 2022
Technology
1
370
Tokyo.R #97 Data Visualization
第97回Tokyo.Rの初心者セッションでトークした際のスライドです。
kilometer
March 19, 2022
Tweet
Share
More Decks by kilometer
See All by kilometer
TokyoR#111_ANOVA
kilometer
2
930
TokyoR109.pdf
kilometer
1
510
TokyoR#108_NestedDataHandling
kilometer
0
880
TokyoR#107_R_GeoData
kilometer
0
480
SappoRo.R_roundrobin
kilometer
0
170
TokyoR#104_DataProcessing
kilometer
1
730
TokyoR#103_DataProcessing
kilometer
0
950
TokyoR#102_RMarkdown
kilometer
1
690
TokyoR#101_RegressionAnalysis
kilometer
0
520
Other Decks in Technology
See All in Technology
32のキーワードで学ぶ はじめての耐量子暗号(PQC) / Getting Started with Post-Quantum Cryptography in 32 keywords
quiver
0
170
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
37k
Symfony AI in Action
el_stoffel
2
350
こがヘンだよ!Snowflake?サービス名称へのこだわり
tarotaro0129
0
110
AI/MLのマルチテナント基盤を支えるコンテナ技術
pfn
PRO
4
680
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
9
4.4k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
.NET 10 のパフォーマンス改善
nenonaninu
2
4.6k
21st ACRi Webinar - AMD Presentation Slide (Nao Sumikawa)
nao_sumikawa
0
180
経営から紐解くデータマネジメント
pacocat
9
1.9k
Capture Checking / Separation Checking 入門
tanishiking
0
110
OpenShiftのBGPサポート - MetalLB+FRR-k8s編
orimanabu
0
150
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Transcript
#97 @kilometer00 2022.03.19 BeginneR Session -- Data Visualization --
Who!? 誰だ?
Who!? 名前: 三村 @kilometer 職業: ポスドク (こうがくはくし) 専⾨: ⾏動神経科学(霊⻑類) 脳イメージング
医療システム⼯学 R歴: ~ 10年ぐらい 流⾏: むし社
宣伝!!(書籍の翻訳に参加しました。)
BeginneR Session
BeginneR
Beginne R Advance d Hoxo_m If I have seen further
it is by standing on the shoulders of Giants. -- Sir Isaac Newton, 1676
Before After BeginneR Session BeginneR BeginneR
"a" != "b" # is A in B? ブール演算⼦ Boolean
Algebra [1] TRUE 1 %in% 10:100 # is A in B? [1] FALSE
George Boole 1815 - 1864 A Class-Room Introduc2on to Logic
h7ps://niyamaklogic.wordpress.com/c ategory/laws-of-thoughts/ Mathema;cian Philosopher &
ブール演算⼦ Boolean Algebra A == B A != B George
Boole 1815 - 1864 A | B A & B A %in% B # equal to # not equal to # or # and # is A in B? wikipedia
Programing
Programing
Programing Write Run Read Think Write Run Read Think Communicate
Share
Text Image Information Intention Data decode encode Data analysis feedback
≠
Text Image First, A. Next, B. Then C. Finally D.
time Intention encode "Frozen" structure A B C D 8me value α β
σʔλ 情報のうち意思伝達・解釈・処理に 適した再利⽤可能なもの 国際電気標準会議(International Electrotechnical Commission, IEC)による定義
σʔλ 情報のうち意思伝達・解釈・処理に 適した再利⽤可能なもの ใ 実存を符号化した表象
σʔλ ใͷ͏ͪҙࢥୡɾղऍɾॲཧʹ దͨ͠࠶ར༻Մೳͳͷ ใ ࣮ଘΛූ߸Խͨ͠ද ࣮ଘ ؍ͷ༗ແʹΑΒͣଘࡏ͍ͯ͠Δ ͷͦͷͷ ࣸ૾ʢූ߸Խʣ
ࣸ૾ Ϧϯΰ ʢ࣮ଘʣ Ϧϯΰ ʢใʣ mapping
ࣸ૾ (mapping) 𝑓: 𝑋 → 𝑌 𝑋 𝑌 ͋Δใͷू߹ͷཁૉΛɺผͷใͷू߹ͷ ͨͩͭͷཁૉʹରԠ͚ͮΔϓϩηε
ใྔ ࣮ଘ ใ σʔλ Ϧϯΰ ූ߸Խ
ใྔ ࣮ଘ ใ σʔλ Ϧϯΰ ූ߸Խ ใྔͷଛࣦ
Ϧϯΰ ࣸ૾ ϑϧʔπ ৭ ը૾ ࣮ଘ ใ νϟωϧ mapping
channel
𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥"
𝑦! 𝑦" σʔλՄࢹԽ ࣸ૾ mapping
𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥"
𝑦! 𝑦" σʔλՄࢹԽ ࣸ૾ mapping x axis, y axis, color, fill, shape, linetype, alpha… aesthetic channels ৹ඒతνϟωϧ
𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥"
𝑦! 𝑦" σʔλՄࢹԽ ࣸ૾ mapping x axis, y axis, color, fill, shape, linetype, alpha… aesthetic channels ৹ඒతνϟωϧ ggplot(data = my_data) + aes(x = X, y = Y)) + goem_point() HHQMPUʹΑΔ࡞ਤ
࣮ଘ ࣸ૾ʢ؍ʣ σʔλ ࣸ૾ʢσʔλՄࢹԽʣ άϥϑ 𝑋 𝑌 𝑦! 𝑥! 𝑦"
𝑥" 𝑋 𝑌 𝑥! 𝑥" 𝑦! 𝑦" EBUB mapping aesthetic channels ৹ඒతνϟωϧ σʔλՄࢹԽ
ॳΊͯͷHHQMPU library(tidyverse) dat <- data.frame(tag = rep(c("a", "b"), each =
2), X = c(1, 3, 5, 7), Y = c(3, 9, 4, 2)) ggplot() + geom_point(data = dat, mapping = aes(x = X, y = Y))
ॳΊͯͷHHQMPU
ॳΊͯͷHHQMPU library(tidyverse) dat <- data.frame(tag = rep(c("a", "b"), each =
2), X = c(1, 3, 5, 7), Y = c(3, 9, 4, 2)) ggplot() + geom_point(data = dat, mapping = aes(x = X, y = Y)) EBUBGSBNFͷࢦఆ BFT ؔͷதͰ৹ඒతཁૉͱͯ͠มͱνϟωϧͷରԠΛࢦఆ ඳը։࢝Λએݴ ه߸Ͱͭͳ͙ BFT ؔͷҾ໊ EBUͷม໊ άϥϑͷछྨʹ߹ΘͤͨHFPN@ ؔΛ༻
library(tidyverse) dat <- data.frame(tag = rep(c("a", "b"), each = 2),
X = c(1, 3, 5, 7), Y = c(3, 9, 4, 2)) ggplot() + geom_point(data = dat, mapping = aes(x = X, y = Y)) + geom_path(data = dat, mapping = aes(x = X, y = Y)) ॳΊ͔ͯΒ൪ͷHHQMPU
ॳΊ͔ͯΒ൪ͷHHQMPU
HHQMPUίʔυͷॻ͖ํͷ৭ʑ ggplot() + geom_point(data = dat, mapping = aes(x =
X, y = Y)) + geom_path(data = dat, mapping = aes(x = X, y = Y)) ggplot(data = dat, mapping = aes(x = X, y = Y)) + geom_point() + geom_path() ggplot(data = dat) + aes(x = X, y = Y) + geom_point() + geom_path() ڞ௨ͷࢦఆΛHHQMPU ؔͷதͰߦ͍ɺҎԼলུ͢Δ͜ͱ͕Մೳ NBQQJOHͷใ͕ॻ͔ΕͨBFT ؔΛHHQMPU ؔͷ֎ʹஔ͘͜ͱͰ͖Δ
HHQMPUίʔυͷॻ͖ํͷ৭ʑ ggplot() + geom_point(data = dat, mapping = aes(x =
X, y = Y, color = tag)) + geom_path(data = dat, mapping = aes(x = X, y = Y)) ggplot(data = dat) + aes(x = X, y = Y) + # 括り出すのは共通するものだけ geom_point(mapping = aes(color = tag)) + geom_path() ϙΠϯτͷ৭ͷNBQQJOHΛࢦఆ
HHQMPUίʔυͷॻ͖ํͷ৭ʑ ggplot(data = dat) + aes(x = X, y =
Y) + geom_point(aes(color = tag)) + geom_path() ggplot(data = dat) + aes(x = X, y = Y) + geom_path() + geom_point(aes(color = tag)) ͋ͱ͔Β ͰॏͶͨཁૉ͕લ໘ʹඳը͞ΕΔ
library(tidyverse) dat <- data.frame(tag = rep(c("a", "b"), each = 2),
X = c(1, 3, 5, 7), Y = c(3, 9, 4, 2)) g <- ggplot(data = dat) + aes(x = X, y = Y) + geom_path() + geom_point(mapping = aes(color = tag)) HHQMPUը૾ͷอଘ ggsave(filename = "fig/demo01.png", plot = g, width = 4, height = 3, dpi = 150)
library(tidyverse) dat <- data.frame(tag = rep(c("a", "b"), each = 2),
X = c(1, 3, 5, 7), Y = c(3, 9, 4, 2)) g <- ggplot(data = dat) + aes(x = X, y = Y) + geom_path() + geom_point(mapping = aes(color = tag)) HHQMPUը૾ͷอଘ ggsave(filename = "fig/demo01.png", plot = g, width = 4, height = 3, dpi = 150) αΠζσϑΥϧτͰΠϯν୯ҐͰࢦఆ
library(tidyverse) dat <- data.frame(tag = rep(c("a", "b"), each = 2),
X = c(1, 3, 5, 7), Y = c(3, 9, 4, 2)) g <- ggplot(data = dat) + aes(x = X, y = Y) + geom_path() + geom_point(mapping = aes(color = tag)) HHQMPUը૾ͷอଘ ggsave(filename = "fig/demo01.png", plot = g, width = 10, height = 7.5, dpi = 150, units = "cm") # "cm", "mm", "in"を指定可能
HFNP@ ؔ܈ DGIUUQTXXXSTUVEJPDPNSFTPVSDFTDIFBUTIFFUT
ෳͷܥྻΛඳը͢Δ > head(anscombe) x1 x2 x3 x4 y1 y2 y3
y4 1 10 10 10 8 8.04 9.14 7.46 6.58 2 8 8 8 8 6.95 8.14 6.77 5.76 3 13 13 13 8 7.58 8.74 12.74 7.71 4 9 9 9 8 8.81 8.77 7.11 8.84 5 11 11 11 8 8.33 9.26 7.81 8.47 6 14 14 14 8 9.96 8.10 8.84 7.04 ggplot(data = anscombe) + geom_point(aes(x = x1, y = y1)) + geom_point(aes(x = x2, y = y2), color = "Red") + geom_point(aes(x = x3, y = y3), color = "Blue") + geom_point(aes(x = x4, y = y4), color = "Green") ͜Ε·ͰͷࣝͰؤுΔͱ͜͏ͳΔ
HHQMPUʹΑΔσʔλՄࢹԽ ࣮ଘ ࣸ૾ʢ؍ʣ σʔλ ࣸ૾ʢσʔλՄࢹԽʣ άϥϑ 𝑋 𝑌 𝑦! 𝑥!
𝑦" 𝑥" SBXEBUB 写像 aesthetic channels ৹ඒతνϟωϧ ՄࢹԽʹదͨ͠EBUBܗࣜ 変形 ਤͷͭͷ৹ඒతνϟωϧ͕ σʔλͷͭͷมʹରԠ͍ͯ͠Δ
> head(anscombe) x1 x2 x3 x4 y1 y2 y3 y4
1 10 10 10 8 8.04 9.14 7.46 6.58 2 8 8 8 8 6.95 8.14 6.77 5.76 3 13 13 13 8 7.58 8.74 12.74 7.71 4 9 9 9 8 8.81 8.77 7.11 8.84 5 11 11 11 8 8.33 9.26 7.81 8.47 6 14 14 14 8 9.96 8.10 8.84 7.04 > head(anscombe_long) key x y 1 1 10 8.04 2 2 10 9.14 3 3 10 7.46 4 4 8 6.58 5 1 8 6.95 6 2 8 8.14 ggplot(data = anscombe_long) + aes(x = x, y = y, color = key) + geom_point() ৹ඒతνϟωϧ Y࣠ Z࣠ ৭ ʹରԠ͢ΔมʹͳΔΑ͏มܗ ݟ௨͠ྑ͘γϯϓϧʹՄࢹԽͰ͖Δ
> head(anscombe) x1 x2 x3 x4 y1 y2 y3 y4
1 10 10 10 8 8.04 9.14 7.46 6.58 2 8 8 8 8 6.95 8.14 6.77 5.76 3 13 13 13 8 7.58 8.74 12.74 7.71 4 9 9 9 8 8.81 8.77 7.11 8.84 5 11 11 11 8 8.33 9.26 7.81 8.47 6 14 14 14 8 9.96 8.10 8.84 7.04 > head(anscombe_long) key x y 1 1 10 8.04 2 2 10 9.14 3 3 10 7.46 4 4 8 6.58 5 1 8 6.95 6 2 8 8.14 ৹ඒతνϟωϧ Y࣠ Z࣠ ৭ ʹରԠ͢ΔมʹͳΔΑ͏มܗ anscombe_long <- pivot_longer(data = anscombe, cols = everything(), names_to = c(".value", "key"), names_pattern = "(.)(.)") ԣσʔλ ॎσʔλ
ggplot(data = anscombe_long) + aes(x = x, y = y,
color = key) + geom_point() ggplot(data = anscombe_long) + aes(x = x, y = y, color = key) + geom_point() + facet_wrap(facets = . ~ key, nrow = 1) ਫ४ͰਤΛׂ͢Δ
Wide Long Nested input output pivot_longer pivot_wider group_nest unnest ggplot
visualization map output ggsave
Enjoy!! KMT©