forked from amzoss/ggplot2-DF19
-
Notifications
You must be signed in to change notification settings - Fork 0
/
1-got_nyt_final.Rmd
130 lines (81 loc) · 2.63 KB
/
1-got_nyt_final.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
---
title: "Game of Thromes Character Ratings"
author: "Angela Zoss"
date: "3/19/2019"
output: html_document
---
## Setup your environment
```{r}
# Load required libraries
library(tidyverse)
```
## Load your data
```{r}
# data comes from https://int.nyt.com/newsgraphics/2017/2017-07-17-got-matrix/mean.json
# data based on ratings using tool at https://www.nytimes.com/interactive/2017/08/09/upshot/game-of-thrones-chart.html
got <- read_csv("data/got_ratings.csv")
```
## Create a basic plot
```{r}
# Remember the basic steps:
# - set the data (main function)
# - choose a shape layer
# - map variables to aesthetics using aes() -> start with x and y in main function
ggplot(got, aes(x=moral,y=physical)) +
geom_point()
```
## Set the alpha (transparency) of all points to .75
```{r}
ggplot(got, aes(x=moral,y=physical)) +
geom_point(alpha=.75)
```
## Add labels
```{r}
# hint: check https://ggplot2.tidyverse.org/reference/#section-layer-geoms for all geom options
# wrong way: aes() in geom_point does not carry down; has to be in ggplot()
#ggplot(got) +
# geom_point(aes(x=moral,y=physical)) +
# geom_text(aes(label=label))
ggplot(got, aes(x=moral,y=physical)) +
geom_point(alpha=.75) +
geom_text(aes(label=label))
```
## Fix label overlap
```{r}
# hint: look at ?geom_text for an option that might change the position slightly
# where should the new option go? what layer? inside or outside of aesthetics?
ggplot(got, aes(x=moral,y=physical)) +
geom_point(alpha=.75) +
geom_text(aes(label=label), nudge_y = -.015)
```
## Add colors
```{r}
# add gender as a color three different ways:
# - points only
# - labels only
# - both
ggplot(got, aes(x=moral,y=physical)) +
geom_point(aes(color=gender), alpha=.75) +
geom_text(aes(label=label), nudge_y = -.015)
ggplot(got, aes(x=moral,y=physical)) +
geom_point(alpha=.75) +
geom_text(aes(label=label, color=gender), nudge_y = -.015)
ggplot(got, aes(x=moral,y=physical, color=gender)) +
geom_point(alpha=.75) +
geom_text(aes(label=label), nudge_y = -.015)
```
## Turn off legend for text layer
```{r}
# hint: there is another property for the geom_text layer that might help
ggplot(got, aes(x=moral,y=physical, color=gender)) +
geom_point(alpha=.75) +
geom_text(aes(label=label), nudge_y = -.015, show.legend = FALSE)
```
## Split the chart up into separate charts for each family(loyalty group)
```{r}
# Hint: check https://ggplot2.tidyverse.org/reference/ for facet layers
ggplot(got, aes(x=moral,y=physical, color=gender)) +
geom_point(alpha=.75) +
geom_text(aes(label=label), nudge_y = -.015, show.legend = FALSE) +
facet_wrap(~loyalty)
```