This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
En esta sección trabajaremos con un gráfico de puntos, comunmente denominado scatterplot. Cargamos los paquetes necesarios para ello, que será el ggplot2.
library(ggplot2)
## Registered S3 methods overwritten by 'ggplot2':
## method from
## [.quosures rlang
## c.quosures rlang
## print.quosures rlang
Usaremos el dataset que viene por defecto con R y que ya hemos usado anteriormente, el mtcars.
df <- mtcars #Almacenamos el dataset en una variable
head(df) #Visualizamos las 6 primeras filas del dataset
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Como en el caso del histograma, lo primero es seleccionar los elementos data y aesthetics para la sintaxis básica del gráfico. A diferencia del histograma, en el elemento aesthetic necesitamos seleccionar dos variables para “enfrentarlas” en el gráfico.
pl <- ggplot(df, aes(x=wt,y=mpg))
Una vez construída la sintaxis básica, seleccionamos el tipo de gráfico que queremos. En este caso, el scatterplot viene dado por el comando geom_point()
pl + geom_point()
Existe también el comando geom_jitter() que no es más que una simplificación del comando geom_point(position=“jitter”), usado cuando existe un overplotting. En este caso, como en el gráfico se identifican todos los valores no es necesario añadir cierto ruido mediante el jitter.
Modificamos algunos de los parámetros del geom_point() para ver cómo afecta al gráfico final.
pl + geom_point(size=5, alpha=0.4)
Al igual que ocurría con los histogramas, el parámetro alpha nos permite darle cierta transparencia a los gráficos. Podemos observar que en el caso de los puntos que se superponen, se ve más oscura la zona de la intersección.
Una modificación interesante es el poder poner dentro del aesthetics del geom_point() el tamaño de los puntos en función de otra variable y no de un número.
pl + geom_point(aes(size=cyl))
Obtenemos los distintos valores de los coches en función de su cilindrada, sin embargo, si nos hemos familiarizado con el dataset, veremos que la leyenda está mal.
unique(df$cyl)
## [1] 6 4 8
Efectivamente, el número de cilindros viene dado por los valores 4,6 y 8, pero sin embargo ggplot nos lo interpreta como una variable continua. Para solucionar esto, es necesario convertir esa variable en factores. Podemos hacerlo modificando el dataset original:
#df$cyl <- factor(df$cyl)
#str(df$cyl)
O usando el comando factor() en el aesthetics del geom_point()
pl + geom_point(aes(size=factor(cyl)))
## Warning: Using size for a discrete variable is not advised.
Podemos realizar la misma operación con el atributo shape.
pl + geom_point(aes(shape=factor(cyl)),size=5)
Cuando usamos una variable del dataset para modificar alguno de los parámetros del scatterplot (como el tamaño, la forma…) es necesaria incluírla dentro del aes del geom_point(). Sino, podemos ponerlo fuera. Por último, veamos cómo se puede modificar también el color en función de otra variable.
pl + geom_point(aes(shape=factor(cyl), col=factor(cyl)), size=2)
El color también se puede usar con el código hexadecimal. Si no lo conocemos, podemos ir a google y poner “hex color picker” para facilitarnos la búsqueda.
pl + geom_point(size=2, color='#a7c627')
Pintemos ahora el gráfico anterior coloreado en función de la variable hp, que es continua.
pl2 <- pl + geom_point(aes(col=hp), size=3)
Para modificar el gradiente de los colores usaremos el comando scale_color_gradient()
pl3 <- pl2 + scale_color_gradient(low="blue", high="red")
pl3
Podemos usar también el código hexadecimal.
pl4 <- pl2 + scale_color_gradient(low="#a7c627", high="#116d72")
pl4