library(dplyr)
library(ggplot2)
library(sf)
Soluciones capítulo 3
Actividad 1
Sobre el dataset diamonds
, pinta:
- El histograma del precio según los facets de la calidad del corte (
cut
) - Un gráfico de barras por claridad (
clarity
) según los facets de calidad del corte (cut
) y color (color
).
# histograma del precio según la calidad del corte
ggplot(diamonds, aes(x = price)) +
geom_histogram(bins = 30) +
facet_wrap(~ cut, scales = "free_y") +
theme_minimal() +
labs(
title = "Relación entre el precio y la calidad",
y = "# diamantes",
x = "precio"
)
# gráfico de barras por claridad según la calidad del corte y color
ggplot(diamonds, aes(x = clarity)) +
geom_bar() +
facet_grid(cut ~ color, scales = "free_y") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
labs(
y = "# diamantes",
x = "Claridad",
title = "Diamantes por color, calidad y claridad"
)
Actividad 2
Utilizando los datos de elecciones (elecciones_2019_provincias.csv y elecciones_2019_votos.csv) y el mapa base con las provincias (spain_provinces.geojson), crea los siguientes gráficos:
- Un mapa coloreado según la población de cada provincia (mayor intensidad = mayor población).
- Un mapa con el color del partido más votado en cada provincia (PP en azul, PSOE en rojo, …).
- Un facet de mapas, con 4, marcando el porcentaje de votos a los 4 partidos políticos (PP, PSOE, VOX, Podemos). Por ejemplo, en el facet del PSOE, se verán en un color más intenso las provincias con mayor % de votos a PSOE, y menos aquellas con menor %. Y así con cada uno de los partidos.
# mapa coloreado según la población de cada provincia
<- read_sf("dat/spain_provinces.geojson")
provincias <- read.csv("dat/elecciones_2019_provincias.csv")
elecciones_provincias
<- provincias %>%
tmp inner_join(elecciones_provincias, by = c("codigo" = "provincia_cod_ine"))
ggplot(tmp) +
geom_sf(aes(fill = poblacion)) +
scale_fill_continuous(trans = "reverse") +
theme_void() +
labs(
title = "Población por provincias",
fill = "Población"
)
# mapa con el color del partido más votado en cada provincia
<- read.csv("dat/elecciones_2019_votos.csv")
elecciones_votos
<- elecciones_votos %>%
mas_votado group_by(provincia_cod_ine) %>%
arrange(desc(votos)) %>%
summarise(partido = first(partido))
<- provincias %>%
tmp inner_join(mas_votado, by = c("codigo" = "provincia_cod_ine"))
<- c(
paleta_partidos "erc" = "#f7a003",
"navarra_suma" = "#444444",
"pnv" = "#278347",
"pp" = "#3caee1",
"psoe" = "#bb0201",
"teruelexiste" = "#eeeeee",
"vox" = "#83b431"
)
ggplot(tmp) +
geom_sf(aes(fill = partido)) +
scale_fill_manual(values = paleta_partidos) +
theme_void() +
labs(
title = "Partido más votado por provincia",
fill = "Partido"
)
# Un _facet_ de mapas, con 4, marcando el porcentaje de votos a los 4 partidos políticos
# (PP, PSOE, VOX, Podemos)
<- elecciones_votos %>%
votos filter(partido %in% c("pp", "psoe", "podemos", "vox")) %>%
inner_join(elecciones_provincias) %>%
mutate(ratio_votos = votos / votos_validos)
<- provincias %>%
tmp inner_join(votos, by = c("codigo" = "provincia_cod_ine"))
ggplot(tmp) +
geom_sf(aes(fill = ratio_votos)) +
scale_fill_distiller(palette = "Blues", trans = "reverse") +
facet_wrap(~ partido) +
theme_void()
Actividad 3
Repasa estos gráficos que acabas de generar y añade títulos, nombres de eje, y personaliza el tema utilizado.
# Hecho sobre los propios gráficos