-
Notifications
You must be signed in to change notification settings - Fork 7
/
985-respostas-ggplot2.Rmd
242 lines (174 loc) · 5.89 KB
/
985-respostas-ggplot2.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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
## O pacote ggplot2
```{r, include=FALSE}
knitr::opts_chunk$set(
fig.align = "center",
cache = TRUE
)
imdb <- readr::read_csv("assets/data/imdb.csv")
```
```{r, message = FALSE, warning = FALSE}
library(dplyr)
library(ggplot2)
```
**1.** O que acontece quando rodamos o código `ggplot(data = mtcars)`?
*A função `ggplot()` cria o nosso canvas, um quadro em branco onde vamos colocar todas as outras camadas do gráfico. Dentro do R, isso corresponde a uma lista com as informações necessárias para a criação do gráfico. Cada camada adicionada ao ggplot adiciona mais informações nessa lista. No exemplo acima, como passamos a base `mtcars` para a função `ggplot()`, a base mtcars é guardada dentro dessa lista, e será utilizada quando mapearmos variáveis ao gráfico.*
---
**2.** O que tem de errado no código abaixo? Por que os pontos não ficaram azuis?
```{r}
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy, color = "blue"))
```
*Quando queremos definir o valor de um atributo estético, fazemos isso fora da função `aes()`. Usamos a função `aes()` apenas para mapear variáveis aos atributos estéticos do gráfico. O correto seria:*
```{r}
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
```
---
**3.** Mapeie uma variável contínua para a cor, o tamanho e a forma de um gráfico de pontos. Como esses atributos estéticos se comportam diferente para variáveis categóricas vs contínuas?
```{r}
# Cor (var continua)
mtcars %>%
ggplot() +
geom_point(aes(y = mpg, x = wt, color = carb))
# Cor (var discreta)
mtcars %>%
mutate(carb = as.character(carb)) %>%
ggplot() +
geom_point(aes(y = mpg, x = wt, color = carb))
```
```{r}
# Tamanho (var continua)
mtcars %>%
ggplot() +
geom_point(aes(y = mpg, x = wt, size = carb))
# Tamanho (var discreta)
mtcars %>%
mutate(carb = as.character(carb)) %>%
ggplot() +
geom_point(aes(y = mpg, x = wt, size = carb))
```
```{r, error = TRUE}
# Forma (var continua)
# Não pode ser utilizada com variável contínua
mtcars %>%
ggplot() +
geom_point(aes(y = mpg, x = wt, shape = carb))
```
```{r}
# Forma (var discreta)
mtcars %>%
mutate(carb = as.character(carb)) %>%
ggplot() +
geom_point(aes(y = mpg, x = wt, shape = carb))
```
---
**4.** Utilizando o `mtcars`, faça um gráfico de dispersão de `mpg` por `qsec`.
```{r}
mtcars %>%
ggplot() +
geom_point(aes(y = mpg, x = qsec))
```
---
**5.** Utilizando o `mtcars`, o que acontece se você fizer um gráfico de dispersão de `vs` por `mpg`? Qual gráfico seria melhor para representar esses dados?
```{r}
mtcars %>%
ggplot(aes(y = mpg, x = vs)) +
geom_point()
```
*Como os pontos ficam sobrepostos, um boxplot seria mais interessante nesse caso pois nos dá uma visão melhor da distribuição da variável `mpg` para cada categoria da variável `vs`.*
```{r}
mtcars %>%
mutate(vs = as.character(vs)) %>%
ggplot(aes(y = mpg, x = vs)) +
geom_boxplot()
```
---
Para resolver os exercícios a seguir, utilize a base `imdb`.
**6.** Crie um gráfico de dispersão da nota do imdb pelo orçamento.
```{r}
imdb %>%
ggplot(aes(y = nota_imdb, x = orcamento)) +
geom_point()
```
---
**7.** Faça um gráfico de linhas do orçamento médio dos filmes ao longo dos anos.
```{r}
imdb %>%
group_by(ano) %>%
summarise(orcamento_medio = mean(orcamento, na.rm = TRUE)) %>%
ggplot(aes(x = ano, y = orcamento_medio)) +
geom_line()
```
---
**8.** Transforme o gráfico do exercício anterior em um gráfico de barras.
```{r}
imdb %>%
group_by(ano) %>%
summarise(orcamento_medio = mean(orcamento, na.rm = TRUE)) %>%
ggplot(aes(x = ano, y = orcamento_medio)) +
geom_col()
```
---
**9.** Descubra quais são as 5 produtoras (como a Walt Disney Animation Studios e a Walt Disney Pictures) que mais aparecem na coluna `producao` e faça um boxplot do lucro dos filmes dessas produtoras.
```{r}
top_5_produtoras <- imdb %>%
count(producao) %>%
slice_max(order_by = n, n = 5) %>%
pull(producao)
imdb %>%
filter(producao %in% top_5_produtoras) %>%
mutate(lucro = receita - orcamento) %>%
ggplot(aes(y = producao, x = lucro)) +
geom_boxplot()
```
---
**10.** Com base no código abaixo, resolva os itens a seguir.
```{r}
diretores <- c(
"Steven Spielberg",
"Quentin Tarantino",
"Robert Zemeckis",
"Martin Scorsese"
)
imdb %>%
filter(direcao %in% diretores) %>%
group_by(ano, direcao) %>%
summarise(nota_media = mean(nota_imdb, na.rm = TRUE)) %>%
ggplot(aes(x = ano, y = nota_media)) +
geom_point() +
geom_line() +
facet_wrap(vars(direcao))
```
**a.** Analisando o gráfico gerado, descreva o que a função `facet_wrap()` faz.
*A função `facet_wrap()` replica o gráfico especificado para cada categoria de uma coluna.*
**b.** Utilize os argumentos `nrow` e `ncol` da função `facet_wrap()` para colocar os quatro gráficos em uma única coluna.
```{r}
imdb %>%
filter(direcao %in% diretores) %>%
group_by(ano, direcao) %>%
summarise(nota_media = mean(nota_imdb, na.rm = TRUE)) %>%
ggplot(aes(x = ano, y = nota_media)) +
geom_point() +
geom_line() +
facet_wrap(vars(direcao), ncol = 1)
```
---
**11.** Resovla os itens a seguir para fazer um gráfico de barras da frequência de filmes com nota maior que 8 ao longo dos anos.
**a.** Crie uma nova coluna na base IMDB indicando se a nota de um filme é maior que 8 ou não.
```{r}
imdb_notas_8 <- imdb %>%
mutate(nota_maior_que_8 = ifelse(nota_imdb > 8, "Nota maior que 8", "Nota menor que 8"))
```
**b.** b. Utilizando a coluna criada em (a) crie uma tabela com o número anual de filmes com nota maior 8.
```{r}
tabela <- imdb_notas_8 %>%
filter(nota_maior_que_8 == "Nota maior que 8") %>%
count(ano)
tabela
```
**c.** Utilize a tabela criada em (b) para fazer um gráfico de barras do número de filmes com nota maior que 8 ao longo dos anos.
```{r}
tabela %>%
ggplot(aes(x = ano, y = n)) +
geom_col()
```