Slide 1

Slide 1 text

#97 @kilometer00 2022.03.19 BeginneR Session -- Data Visualization --

Slide 2

Slide 2 text

Who!? 誰だ?

Slide 3

Slide 3 text

Who!? 名前: 三村 @kilometer 職業: ポスドク (こうがくはくし) 専⾨: ⾏動神経科学(霊⻑類) 脳イメージング 医療システム⼯学 R歴: ~ 10年ぐらい 流⾏: むし社

Slide 4

Slide 4 text

宣伝!!(書籍の翻訳に参加しました。)

Slide 5

Slide 5 text

BeginneR Session

Slide 6

Slide 6 text

BeginneR

Slide 7

Slide 7 text

Beginne R Advance d Hoxo_m If I have seen further it is by standing on the shoulders of Giants. -- Sir Isaac Newton, 1676

Slide 8

Slide 8 text

Before After BeginneR Session BeginneR BeginneR

Slide 9

Slide 9 text

"a" != "b" # is A in B? ブール演算⼦ Boolean Algebra [1] TRUE 1 %in% 10:100 # is A in B? [1] FALSE

Slide 10

Slide 10 text

George Boole 1815 - 1864 A Class-Room Introduc2on to Logic h7ps://niyamaklogic.wordpress.com/c ategory/laws-of-thoughts/ Mathema;cian Philosopher &

Slide 11

Slide 11 text

ブール演算⼦ 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

Slide 12

Slide 12 text

Programing

Slide 13

Slide 13 text

Programing

Slide 14

Slide 14 text

Programing Write Run Read Think Write Run Read Think Communicate Share

Slide 15

Slide 15 text

Text Image Information Intention Data decode encode Data analysis feedback ≠

Slide 16

Slide 16 text

Text Image First, A. Next, B. Then C. Finally D. time Intention encode "Frozen" structure A B C D 8me value α β

Slide 17

Slide 17 text

σʔλ 情報のうち意思伝達・解釈・処理に 適した再利⽤可能なもの 国際電気標準会議(International Electrotechnical Commission, IEC)による定義

Slide 18

Slide 18 text

σʔλ 情報のうち意思伝達・解釈・処理に 適した再利⽤可能なもの ৘ใ 実存を符号化した表象

Slide 19

Slide 19 text

σʔλ ৘ใͷ͏ͪҙࢥ఻ୡɾղऍɾॲཧʹ దͨ͠࠶ར༻Մೳͳ΋ͷ ৘ใ ࣮ଘΛූ߸Խͨ͠ද৅ ࣮ଘ ؍࡯ͷ༗ແʹΑΒͣଘࡏ͍ͯ͠Δ ΋ͷͦͷ΋ͷ ࣸ૾ʢූ߸Խʣ

Slide 20

Slide 20 text

ࣸ૾ Ϧϯΰ ʢ࣮ଘʣ Ϧϯΰ ʢ৘ใʣ mapping

Slide 21

Slide 21 text

ࣸ૾ (mapping) 𝑓: 𝑋 → 𝑌 𝑋 𝑌 ͋Δ৘ใͷू߹ͷཁૉΛɺผͷ৘ใͷू߹ͷ ͨͩͭͷཁૉʹରԠ͚ͮΔϓϩηε

Slide 22

Slide 22 text

৘ใྔ ࣮ଘ ৘ใ σʔλ Ϧϯΰ ූ߸Խ

Slide 23

Slide 23 text

৘ใྔ ࣮ଘ ৘ใ σʔλ Ϧϯΰ ූ߸Խ ৘ใྔͷଛࣦ

Slide 24

Slide 24 text

Ϧϯΰ ࣸ૾ ϑϧʔπ ੺৭ ը૾ ࣮ଘ ৘ใ νϟωϧ mapping channel

Slide 25

Slide 25 text

𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥" 𝑦! 𝑦" σʔλՄࢹԽ ࣸ૾ mapping

Slide 26

Slide 26 text

𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥" 𝑦! 𝑦" σʔλՄࢹԽ ࣸ૾ mapping x axis, y axis, color, fill, shape, linetype, alpha… aesthetic channels ৹ඒతνϟωϧ

Slide 27

Slide 27 text

𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥" 𝑦! 𝑦" σʔλՄࢹԽ ࣸ૾ mapping x axis, y axis, color, fill, shape, linetype, alpha… aesthetic channels ৹ඒతνϟωϧ ggplot(data = my_data) + aes(x = X, y = Y)) + goem_point() HHQMPUʹΑΔ࡞ਤ

Slide 28

Slide 28 text

࣮ଘ ࣸ૾ʢ؍࡯ʣ σʔλ ࣸ૾ʢσʔλՄࢹԽʣ άϥϑ 𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" 𝑋 𝑌 𝑥! 𝑥" 𝑦! 𝑦" EBUB mapping aesthetic channels ৹ඒతνϟωϧ σʔλՄࢹԽ

Slide 29

Slide 29 text

ॳΊͯͷ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))

Slide 30

Slide 30 text

ॳΊͯͷHHQMPU

Slide 31

Slide 31 text

ॳΊͯͷ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@ ؔ਺Λ࢖༻

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

ॳΊ͔ͯΒ൪໨ͷHHQMPU

Slide 34

Slide 34 text

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 ؔ਺ͷ֎ʹஔ͘͜ͱ΋Ͱ͖Δ

Slide 35

Slide 35 text

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Λࢦఆ

Slide 36

Slide 36 text

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)) ͋ͱ͔ΒͰॏͶͨཁૉ͕લ໘ʹඳը͞ΕΔ

Slide 37

Slide 37 text

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)

Slide 38

Slide 38 text

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) αΠζ͸σϑΥϧτͰ͸Πϯν୯ҐͰࢦఆ

Slide 39

Slide 39 text

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"を指定可能

Slide 40

Slide 40 text

HFNP@ ؔ਺܈ DGIUUQTXXXSTUVEJPDPNSFTPVSDFTDIFBUTIFFUT

Slide 41

Slide 41 text

ෳ਺ͷܥྻΛඳը͢Δ > 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") ͜Ε·Ͱͷ஌ࣝͰؤுΔͱ͜͏ͳΔ

Slide 42

Slide 42 text

HHQMPUʹΑΔσʔλՄࢹԽ ࣮ଘ ࣸ૾ʢ؍࡯ʣ σʔλ ࣸ૾ʢσʔλՄࢹԽʣ άϥϑ 𝑋 𝑌 𝑦! 𝑥! 𝑦" 𝑥" SBXEBUB 写像 aesthetic channels ৹ඒతνϟωϧ ՄࢹԽʹదͨ͠EBUBܗࣜ 変形 ਤͷͭͷ৹ඒతνϟωϧ͕ σʔλͷͭͷม਺ʹରԠ͍ͯ͠Δ

Slide 43

Slide 43 text

> 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࣠ ৭ ʹରԠ͢Δม਺ʹͳΔΑ͏มܗ ݟ௨͠ྑ͘γϯϓϧʹՄࢹԽͰ͖Δ

Slide 44

Slide 44 text

> 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 = "(.)(.)") ԣ௕σʔλ ॎ௕σʔλ

Slide 45

Slide 45 text

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) ਫ४ͰਤΛ෼ׂ͢Δ

Slide 46

Slide 46 text

Wide Long Nested input output pivot_longer pivot_wider group_nest unnest ggplot visualization map output ggsave

Slide 47

Slide 47 text

Enjoy!! KMT©