slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP...

12
וסטטיסטי מדעי לתכנות מבואR חלק12 סמסטר ב' תש" ף, 2019/20 1 וסטטיסטי מדעי לתכנות מבואR חלק12 ב גרפיקה- ggplot וסטטיסטי מדעי לתכנות מבואR חלק12 סמסטר ב' תש" ף, 2019/20 2 ב גרפיקה- R בסיסי ב והשתמשנו ראינו- plot hist boxplot barplot היום לגמרי אחרת גישה וסטטיסטי מדעי לתכנות מבואR חלק12 סמסטר ב' תש" ף, 2019/20 ggplot 3 וסטטיסטי מדעי לתכנות מבואR חלק12 סמסטר ב' תש" ף, 2019/20 ggplot בחבילה נשתמשggplot2 ע נוצרה" יHadley Wickham ב- 2005 על מתבססת" דקדוק" שהמציא לגרפיקהLeland Wilkinson ggplot = Grammar of Graphics Plot של ביותר הפופולריות החבילות אחתR 4

Transcript of slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP...

Page 1: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי 1

12חלק • R –מבוא לתכנות מדעי וסטטיסטי

ggplot-גרפיקה ב

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי 2

בסיסי R-גרפיקה ב

-ראינו והשתמשנו ב•

•plot

•hist

•boxplot

•barplot

גישה אחרת לגמרי –היום •

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

ggplot

3 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

ggplot

ggplot2נשתמש בחבילה •

2005-ב Hadley Wickhamי "נוצרה ע•

Lelandלגרפיקה שהמציא " דקדוק"מתבססת על •

Wilkinson

•ggplot = Grammar of Graphics Plot

Rאחת החבילות הפופולריות ביותר של •

4

Page 2: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

ggplot

5

איכות

התוצאה

זמן

base R

ggplot

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

אלמנטים של גרפיקה

•data – הנתונים שרוצים להציג בתרשים

•aes – המיפוי האסתטי)aesthetic ( של המשתניםבנתונים לתכונות אסתטיות

)x(מיקום אופקי •

)y(מיקום אנכי •

צבע•

גודל•

6

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

אלמנטים של גרפיקה

•geoms – האובייקטים הגאומטריים שמייצגים את

הנתונים בתרשים

)points(נקודות •

)lines(קווים •

)bars(עמודות •

)polygons(מצולעים •

7 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

אלמנטים של גרפיקה

•stats – טרנספורמציות סטטיסטיות על הנתונים

היסטוגרמהחלוקה לקבוצות וספירת תצפיות בשביל •

סיכום מגמה באמצעות הוספת קו רגרסיה•

שכבה אחר , מוסיפים לתרשים את האלמנטים השונים•

שכבה

8

Page 3: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

הנתונים

> library(ggplot2)

> gDat <- read.table(file="countries_data.txt", header=T,

sep="\t")

> head(gDat)

country year pop continent lifeExp gdpPercap

1 Afghanistan 1952 8425333 Asia 28.801 779.4453

2 Afghanistan 1957 9240934 Asia 30.332 820.8530

3 Afghanistan 1962 10267083 Asia 31.997 853.1007

4 Afghanistan 1967 11537966 Asia 34.020 836.1971

5 Afghanistan 1972 13079460 Asia 36.088 739.9811

6 Afghanistan 1977 14880372 Asia 38.438 786.1134

9 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

דיאגרמת פיזור

> p <- ggplot(gDat, aes(x = gdpPercap, y = lifeExp))

> p + geom_point()

10

40

60

80

0 30000 60000 90000

gdpPercap

lifeE

xp

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

שמות לצירים

> p + geom_point() + labs(x="GDP Per Capita",

y="Life Expectancy")

11

40

60

80

0 30000 60000 90000

GDP Per Capita

Life E

xpecta

ncy

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

טרנספורמציות

"מלוכלכת"טרנספורמציה לוגריתמית •> ggplot(gDat, aes(x = log10(gdpPercap),

y = lifeExp)) + geom_point()

12

40

60

80

3 4 5

log10(gdpPercap)

lifeE

xp

Page 4: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

טרנספורמציות

עדיף ככה•> p + geom_point() + scale_x_log10()

13

40

60

80

1e+03 1e+04 1e+05

gdpPercap

lifeE

xp

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

טרנספורמציות

נקבע את השינויים האחרונים•> p <- p + scale_x_log10() +

labs(x="GDP Per Capita", y="Life Expectancy")

להוסיף בשלבים את הפקודות שרוצים : כך מקובל לעבוד•

"לשמור"

14

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

חלוקה לקבוצות

> p + geom_point(aes(color = continent))

15

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life

Expecta

ncy

continent

Africa

Americas

Asia

Europe

Oceania

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

חלוקה לקבוצות

> p + geom_point(aes(color = continent)) +

scale_color_manual(values =

c("red", "blue", "green", "black", "yellow"))

16

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life

Expecta

ncy

continent

Africa

Americas

Asia

Europe

Oceania

Page 5: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

חלוקה לקבוצות

> vals <- c("#FF0000", "#00FF00", "#0000FF",

"#FF90C0", "#CC6600")

> p + geom_point(aes(color = continent)) +

scale_color_manual(values = vals)

17

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life

Expecta

ncy

continent

Africa

Americas

Asia

Europe

Oceania

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Overplotting-פתרונות ל

> p + geom_point(alpha = 0.3, size = 2)

18

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Overplotting-פתרונות ל

> p + geom_bin2d()

19 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

החלקה

> p + geom_point() + geom_smooth()

20

Page 6: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

החלקה

> p + geom_point() + geom_smooth(lwd = 1.5,

se = FALSE)

21

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life

Expecta

ncy

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

קו רגרסיה

> p + geom_point() + geom_smooth(lwd = 1.5,

se = FALSE, method = "lm")

22

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life

Expecta

ncy

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

החלקה

> p + aes(color = continent) + geom_point() +

geom_smooth(lwd = 1.5, se = FALSE)

23

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life

Expecta

ncy

continent

Africa

Americas

Asia

Europe

Oceania

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Faceting

> p + geom_point(alpha = 0.3) +

facet_wrap(~ continent)

24

Page 7: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Faceting

> p + geom_point(alpha = 0.3) +

facet_wrap(~ continent) + geom_smooth(se = FALSE)

25 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

תרגיל

שרטטו את תוחלת החיים כפונקציה של השנה לכל •

המדינות

דיאגרמת פיזור רגילה•

•faceting לפי יבשת

facetingבלי קו רגרסיה לינארית עם החלקה ועם •

facetingעם החלקה עם •

עם קווים שמחברים בין הנקודות של כל מדינה לאורך השנים•

26

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Subsetting

•ggplot היטב יחד עם עובדתdplyr> library(dplyr)

> gDat %>% filter(country == "Italy") %>%

ggplot(aes(x=year, y=lifeExp)) + geom_line() + geom_point()

27

70

75

80

1950 1960 1970 1980 1990 2000

year

lifeE

xp

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Subsetting

> jCountries <- c("Canada", "Rwanda", "Cambodia")

> gDat %>% filter(country %in% jCountries) %>%

ggplot(aes(x=year, y=lifeExp, color = country)) +

geom_line() + geom_point()

28

40

60

80

1950 1960 1970 1980 1990 2000

year

lifeE

xp

country

Cambodia

Canada

Rwanda

Page 8: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

היסטוגרמה

> ggplot(subset(gDat, continent == "Europe"),

aes(lifeExp)) + geom_histogram()

29

0

10

20

30

40

50

50 60 70 80

lifeExp

count

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

reorderהפונקציה

> diets

name diet change

1 Jill A 1.3

2 Jack C -3.9

3 Tiffany B -6.1

4 Sarah B 1.2

5 Stan A -0.8

6 Terry B -2.0

7 Jeff C -4.4

8 Dave C -2.8

> diets$diet

[1] A C B B A B C C

Levels: A B C

30

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

reorderהפונקציה

> reorder(diets$diet, diets$change, mean)

[1] A C B B A B C C

attr(,"scores")

A B C

0.25 -2.30 -3.70

Levels: C B A

> reorder(diets$diet, diets$change, min)

[1] A C B B A B C C

attr(,"scores")

A B C

-0.8 -6.1 -4.4

Levels: B C A

31 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Stripplots

:לא כל כך טוב•> ggplot(gDat, aes(x = continent, y = lifeExp)) +

geom_point()

32

Page 9: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Stripplots

:עדיף ככה•> ggplot(gDat, aes(x = continent, y = lifeExp)) +

geom_jitter()

33 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Stripplots

> ggplot(gDat, aes(x = continent, y = lifeExp)) +

geom_jitter(position = position_jitter(width=0.4,

height=0), alpha=0.25)

34

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Stripplots

> ggplot(gDat, aes(x = continent, y = lifeExp)) +

geom_jitter(position = position_jitter(width=0.4),

alpha=0.25) +

stat_summary(fun.y=median, color="red",

geom="point", size=5)

35 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Stripplots

איך משנים את התרשים הקודם כך שסדר : תרגיל•

?יהיה לפי חציון עולה stripplots-ה

36

Page 10: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Boxplots

> ggplot(gDat, aes(x = continent, y = lifeExp)) +

geom_boxplot()

37

40

60

80

Africa Americas Asia Europe Oceania

continent

lifeE

xp

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Boxplots

> ggplot(gDat, aes(x = continent, y = lifeExp)) +

geom_boxplot(outlier.colour = "hotpink") +

geom_jitter(position = position_jitter(width=0.4,

height=0), alpha=0.25)

38

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Bar charts

> ggplot(gDat, aes(x = continent)) + geom_bar()

39

0

200

400

600

Africa Americas Asia Europe Oceania

continent

count

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Bar charts

> ggplot(gDat, aes(x = reorder(continent, continent,

length))) + geom_bar() + labs(x = "continent")

40

0

200

400

600

Oceania Americas Europe Asia Africa

continent

count

Page 11: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Bar charts

> ggplot(gDat, aes(x = continent)) +

geom_bar(width=0.2) + coord_flip()

41

Africa

Americas

Asia

Europe

Oceania

0 200 400 600

count

continent

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Bar charts

שברירת המחדל שלו , statיש ארגומנט geom_bar-ל•

“count"היא

לכן הגובה של כל עמודה הוא מספר המדינות בכל יבשת•

?איך משרטטים עמודות בגבהים נתונים•

נניח שנתונה מסגרת הנתונים הבאה•> cars

maker sold

1 Toyota 512

2 Audi 126

3 Honda 313

4 Fiat 88

42

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Bar charts

> ggplot(cars, aes(x = maker, y = sold)) +

geom_bar(stat = "identity")

43

0

100

200

300

400

500

Audi Fiat Honda Toyota

maker

sold

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

הוספת כותרת

> p <- ggplot(gDat, aes(x = gdpPercap, y = lifeExp))

+ scale_x_log10() + aes(color = continent)

+ geom_point() + labs(x="GDP Per Capita", y="Life

Expectancy")

> p + ggtitle("Life expectancy vs. GDP by continent")

44

40

60

80

1e+03 1e+04 1e+05

GDP Per Capita

Life E

xpecta

ncy

continent

Africa

Americas

Asia

Europe

Oceania

Life expectancy vs. GDP by continent

Page 12: slides-12 - ggplotyuval/teaching/R/slides... · 2020. 6. 5. · 15 40 60 80 1e+03 1e+04 1e+05 GDP Per Capita Life Expectancy continent Africa Americas Asia Europe Oceania ... 30 40

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Themes

ויזואלי" סגנון"כל הגרפים שראינו עד עכשיו היו באותו •

ggthemesיש מבחר של סגנונות אחרים בספריה •

נטען את הספריה•> library(ggthemes)

45 2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Themes

> p + theme_economist() +

ggtitle("Life Exp. vs GDP, theme = economist")

46

40

60

80

1e+03 1e+04 1e+05

gdpPercap

life

Exp

continent Africa Americas Asia Europe Oceania

Life Exp. vs GDP, theme = economist

2019/20, ף"תש' בסמסטר • 12חלק • R –מבוא לתכנות מדעי וסטטיסטי

Themes

> p + theme_wsj() + ggtitle("Theme = WSJ")

47

40

60

80

1e+03 1e+04 1e+05

continent Africa Americas Asia Europe Oceania

Theme = WSJ