Você está na página 1de 6

Lista 5 - Gráficos

Prof. Guilherme Rodrigues


27 de novembro de 2020
Neste trabalho estamos interessados em explorar algumas das modernas ferramentas de visualização de dados disponíveis no R .

Antes de iniciarmos, precisamos instalar/carregar alguns pacotes adicionais usando o código a seguir. Note que os pacotes ggflags e ggmap
estão sendo importados do github, e não do CRAN.

devtools::install_github("rensa/ggflags")
devtools::install_github("dkahle/ggmap")
pacman::p_load(ggplot2, tidyverse, gganimate, gapminder, gifski, ggExtra, treemapify,
ggmap, ggalt, processx, ggflags, vembedr, htmltools)

Questão 1)
Assista ao vídeo a seguir. Caso deseje, é possível assistir com legenda em português. Para tanto, basta clicar em configurações (na parte de
baixo da janela) e selecionar o idioma desejado.

De acordo com o analista, os países estão convergindo para o mesmo estado, deixando a entender que as diferenças entre os países está
diminuindo. No código abaixo, reproduzimos parte das animações em um gráfico onde a renda per capta está na escala linear (e não logarítmica).

# gapminder.2 <- filter(gapminder, continent %in% c("Africa", "Americas", "Europe"))


lybia <- subset(gapminder, country == "Libya")
brasil <- subset(gapminder, country == "Brazil")
g <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, color=continent, frame = year)) +
geom_point(alpha = 0.7) +
scale_size(range = c(2, 12)) +
labs(title = 'Year: {frame_time}', x = 'PIB per capita', y = 'Expectativa de vida') +
transition_time(year) +
geom_flag(data=brasil, country="br", show.legend=F) +
geom_text(data=lybia, label="Libia", show.legend=F, size=6, nudge_x=3000)
animate(g, nframes=100, fps=10, start_pause=5, end_pause=25)
a. Baseado na animação, você concorda que a diferença de riquezas está diminuíndo?

b. Qual era o país com maior renda per capta no início da série? O que você diria em relação a trajetória econêmica desse país no período de
1950 a 1980? Dica: pesquise em Inglês.

c. Recrie o gráfico identificando o país identificado no item anterior.

Questão 2)
Nessa questão representaremos graficamente algumas informações contidas no banco de dados mpg

O gráfico a seguir apresenta a variação conjunta e marginal das variáveis cty e hwy .

g <- ggplot(mpg, aes(cty, hwy)) +


geom_count() +
geom_smooth(method="lm", se=F) +
theme(legend.position = "none")
ggMarginal(g, type = "density", fill="blue", alpha=.2, color="blue")

## `geom_smooth()` using formula 'y ~ x'


## `geom_smooth()` using formula 'y ~ x'
a. Substitua as densidades marginais estimadas (as curvas azuis) por histogramas e troque a cor dos pontos para vermelho .

b. Considere agora o gráfico abaixo. Acrescente uma linha vertical passando pelo ponto x=0 (usando a função geom_abline ) e uma linha
passando em volta dos carros que percorrem ao menos 10 milhas/galão a mais do que a média (usando a função geom_encircle ).

mtcars$`car name` <- rownames(mtcars)


mtcars$mpg_z <- round((mtcars$mpg - mean(mtcars$mpg)), 2)
mtcars <- mtcars[order(mtcars$mpg_z), ] # sort
mtcars$`car name` <- factor(mtcars$`car name`, levels = mtcars$`car name`)
mtcars$mpg_type <- ifelse(mtcars$mpg_z < 0, "Abaixo", "Acima")
ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
geom_point(stat='identity', aes(col=mpg_type), size=6) +
scale_color_manual(name="Milhagem",
labels = c("Abaixo da média", "Acima da média"),
values = c("Acima"="#00ba38", "Abaixo"="#f8766d")) +
geom_text(color="white", size=2) +
labs(title="Eficiência energética",
y="Milhas acima da média",
x="Nome do carro") +
ylim(-15, 15) +
coord_flip()

c. O gráfico de barras abaixo apresenta barras empilhadas. Mude os parâmetros do gráfico para que as barras sejam dispostas lado a lado.

g <- ggplot(mpg, aes(manufacturer))


g + geom_bar(aes(fill=class), width = 0.5) +
theme(axis.text.x = element_text(angle=65, vjust=0.6)) +
labs(title="Histogram on Categorical Variable",
subtitle="Manufacturer across Vehicle Classes")
d. A seguir, apresentamos as densidades estimadas para a eficiência energética de acordo com o número de cilindros do veículo. Crie um
gráfico contendo a mesma informação, mas apresentando os dados usando histogramas colocados em paineis separados (use a função
facet_wrap ).

g <- ggplot(mpg, aes(cty))


g + geom_density(aes(fill=factor(cyl)), alpha=0.8) +
labs(title="Density plot",
subtitle="City Mileage Grouped by Number of cylinders",
caption="Source: mpg",
x="City Mileage",
fill="# Cylinders")

e. Acrescente os pontos “por cima” dos “violinos”. Dica: use a função geom_jitter .

g <- ggplot(mpg, aes(class, cty, fill=class))


g + geom_violin() +
labs(title="Violin plot",
subtitle="City Mileage vs Class of vehicle",
caption="Source: mpg",
x="Class of Vehicle",
y="City Mileage")
f. O gráfico a seguir é útil para se avaliar a participação de cada segmendo no mercado de veículos e a participação de cada fabricante nos
diversos segmento. Faça um gráfico de barras para representar esses dados e avalie qual dos dois gráficos é preferível (uma opinião
justificada basta).

aux <- summarise(group_by(mpg, manufacturer, class), contagem = n())


ggplot(aux, aes(area=contagem, fill=class, subgroup=class, label=manufacturer)) +
geom_treemap() +
scale_fill_brewer(palette = "Dark2") +
geom_treemap_text()

g. No gráfico abaixo, cada ponto é representado pelo texto correspondente à montadora. Veja novamente a animação na questão 1. O que
poderia ser feito para melhorar o grafico abaixo?

ggplot(mpg, aes(displ, hwy, color=class)) +


geom_text(check_overlap = TRUE, label=mpg$manufacturer)
Questão 3)
Essa questão mostra rapidamente como podemos contruír um mapa usando o R. Atenção: Não é preciso fazer essa questão!

O código abaixo indica como gerar um mapa. A partir daí, é fácil acrescentar pontos, textos, locais, curvas de nível, zonas de calor, etc.

Note que para que o código funcione, é preciso substituir o texto “xxx” por uma API válida. Para ter uma API, por sua vez, é preciso fazer um
cadastro no google cloud, criar um novo projeto e solicitar uma API.

register_google(key="xxx")
UnB <- geocode("Universidade de Brasilia") # get longitude and latitude
est <- geocode("cic/est unb")
mapa.unb <- get_googlemap(center = c(lon = UnB[[1]], lat = UnB[[2]]),
zoom = 14, scale = 2,
maptype ="hybrid",
language = "pt-BR",
color = 'color')
ggmap(mapa.unb) +
geom_encircle(x=est[[1]], y=est[[2]],
fill="blue", color="blue", alpha=.6, lwd=2, spread=0.01, s_shape=0, expand=0.01)

Você também pode gostar