gapminder <- gapminder::gapminderMódulo práctico de ITA
(Grupo M)
Ya tenemos las primeras ideas de ggplot2. Ahora vamos a hacer algunos gráficos sencillos, pero de distintos tipos: de líneas, de puntos (X-Y) y de barras. Y al final veremos cómo llevarlos a Word o a Excel.
dplyr) y después hacemos el gráfico (con ggplot2)geom_xx():| tipo de gráfico | geom |
|---|---|
| líneas | geom_line() |
| puntos (X-Y) | geom_point() |
| barras | geom_col() y geom_bar() |
Sirven, sobre todo, para ver cómo evoluciona una variable a lo largo del tiempo
Queremos ver cómo ha evolucionado la esperanza de vida en España. Así que primero nos quedamos con las filas de España:
| country | continent | year | lifeExp | pop | gdpPercap |
|---|---|---|---|---|---|
| Spain | Europe | 1952 | 64.94 | 28549870 | 3834.035 |
| Spain | Europe | 1957 | 66.66 | 29841614 | 4564.802 |
| Spain | Europe | 1962 | 69.69 | 31158061 | 5693.844 |
| Spain | Europe | 1967 | 71.44 | 32850275 | 7993.512 |
| Spain | Europe | 1972 | 73.06 | 34513161 | 10638.751 |
| Spain | Europe | 1977 | 74.39 | 36439000 | 13236.921 |
year) y en el eje Y la esperanza de vida (lifeExp)labs() pone el título del gráfico y los nombres de los ejes
NULL, el eje x se queda sin nombreQueremos comparar varios países.
Fíjate en color = country. Está dentro de aes(), así que el color depende de la variable country; por lo tanto, tendremos un color de linea por país
¿Qué pasará si quitas color = country? Pruébalo. ¿Ves el problema? ggplot2 uniría todos los puntos con una sola línea
Gráficos de puntos (o de dispersión): sirven para ver la relación entre dos variables. Cada punto es una observación
¿Los países más ricos tienen una esperanza de vida más alta? Para verlo nos quedamos con un solo año, el último (2007): así tenemos un punto por país
En el eje X pondremos la renta per cápita (gdpPercap) y en el eje Y la esperanza de vida (lifeExp)
… y como tenemos más variables, podemos usar más estéticas: el color para el continente y el tamaño de los puntos para la población (en millones, para que la leyenda se lea mejor)
Sirven para comparar un valor entre distintos grupos: por ejemplo, la población de cada continente
geom_col(): la altura de las barras ya la tenemosQueremos un gráfico con la población de cada continente en 2007. Primero la calculamos (¿te acuerdas de group_by() + summarise()?) y después hacemos el gráfico
geom_col() la altura de cada barra es un valor que ya está en los datos (aquí, la columna pob)geom_bar(): ggplot2 cuenta por nosotros¿Cuántos países hay en cada continente? Aquí no hace falta calcular nada antes: geom_bar() cuenta las filas de cada grupo
Los datos: una fila por país. Vemos las primeras:
geom_col() si ya tienes la altura de las barras; geom_bar() si quieres que ggplot2 cuente las filas de cada grupo
Con nombres largos o muchos grupos, las barras horizontales se leen mejor. Basta con poner los grupos en el eje Y. Y con reorder() ordenamos las barras según su valor
reorder(continent, pob): ordena los continentes según su poblaciónaes()?En las barras, el color del relleno es la estética fill (color es el color del borde de las barritas). Como siempre, puede ir dentro o fuera de aes():
gdpPercap) de España, Portugal e ItalialifeExp) de cada continente en 2007Para el 1: es igual que el de varios países, pero cambiando los países y la variable del eje Y
Para el 2: primero hay que calcular la media de cada continente, con group_by() y summarise(). Después, como ya tienes la altura de las barras, ¿geom_col() o geom_bar()?
Hacer el gráfico está muy bien, pero muchas veces lo queremos meter en un informe (Word) o en una hoja de cálculo (Excel). Veamos cómo
Lo más cómodo es guardar el gráfico en un fichero de imagen con ggsave()
1p <- ggplot(data = df_spain, aes(x = year, y = lifeExp)) +
geom_line()
2ggsave("grafico_spain.png",
plot = p,
3 width = 16, height = 10, units = "cm",
4 dpi = 300)p
.png, .jpg, .pdf …)
El fichero se guarda en la carpeta del proyecto. Búscalo en la pestaña Files de RStudio
Consejo: pon en width y height el tamaño que tendrá el gráfico en el documento. Así las letras salen con un tamaño razonable
Una vez tienes el fichero .png, en Word: Insertar > Imágenes > Este dispositivo … y eliges el fichero
… o, más fácil aún, arrastras el fichero al documento
un atajo (con truco)
En RStudio, en la pestaña Plots: Export > Copy to Clipboard… y después, en Word, Ctrl + V
Es más rápido, pero el tamaño y la calidad del gráfico los controlas peor. Para un trabajo que vas a entregar, mejor ggsave()
Aquí tenemos 2 opciones:
Meter la imagen, igual que en Word: en Excel, Insertar > Imágenes
rio::export()?¿Cuál es mejor? Depende: si el gráfico ya está terminado, la imagen; si en Excel lo quieres modificar (o actualizar), los datos
Guarda con ggsave() los dos gráficos de la tarea anterior. Elige tú el tamaño
Abre un documento de Word y mete en él los dos gráficos
Exporta a Excel los datos del gráfico de barras (la esperanza de vida media de cada continente) y haz allí un gráfico de barras
dplyr) y después hacemos el gráfico (con ggplot2)
Lo que cambia de un tipo de gráfico a otro es, sobre todo, el geom_xx():
líneas: geom_line(); con color hacemos una línea por grupo
puntos (X-Y): geom_point()
barras: geom_col() si ya tenemos la altura de las barras, geom_bar() si queremos que cuente las filas
ggsave() y después lo metemos en Word o Excel. A Excel también podemos llevar los datos, con rio::export()