Cómo cambiar la estética de los puntos en ggplot

En el último post vimos cómo cambiar el color en un gráfico de ggplot. Pero además del color, existen otros aspectos interesantes sobre la estética de los puntos que se pueden ser la forma, tamaño, transparencia o incluso el borde del punto. Hoy veremos cómo modificar cada uno de ellos. Empezamos!

Antes de nada, como vamos a trabajar con la geometría del gráfico, tomaremos el último gráfico sobre el que hemos estado trabajando hasta el momento, eliminando la geometría, geom_point().

library(ggplot2)
library(showtext)
font_add_google('Anton')

msleep$vore <- as.factor(msleep$vore)
levels(msleep$vore) <- c('carnívoro', 'herbívoro', 'insectívoro', 'omnívoro')

ggplot(msleep, aes(x=sleep_total, y=sleep_rem, color=vore)) +      
  labs(title='El sueño de los mamíferos', 
       subtitle='Sueño REM frente a las horas totales de sueño', 
       caption='Proceedings of the National Academy of Sciences, 104 (3):1051-1056, 2007',
       x='Horas de sueño en total', y='Horas de sueño en fase REM') + 
  theme(plot.title=element_text(family='Anton', size=20),
        plot.subtitle=element_text(family='Anton'),
        axis.title.x = element_text(family='Anton', face='bold', hjust=1),
        axis.title.y = element_text(family='Anton', face='bold', hjust=1),
        strip.text=element_text(family='Anton', face='bold', size=14, hjust=0, color='white'),
        strip.background=element_rect(fill='black')) +
  facet_wrap('vore') +
  theme() -> p

Cómo cambiar la forma de los puntos

La forma de los puntos de un gráfico de ggplot, se puede modificar con el argumento shape dentro de la función de la estética, aes().

p + geom_point(aes(shape=vore))

Al igual que con el color, también sería posible modificar la forma general de todos los puntos del gráfico indicando dicha forma fuera de la función aes(), directamente en geom_point().

p + geom_point(shape='triangle')

Cada forma lleva asociada un número, por lo que se puede especificar bien el nombre de la forma, o el número correspondiente. La lista de formas disponibles es la siguiente:

El nombre de la leyenda de la forma, se puede cambiar a través de la función scale_shape(name="...").

Cómo cambiar el tamaño de los puntos

En ggplot, para cambiar cualquier elemento de la estética se sigue el mismo patrón. En el caso del tamaño de los puntos, basta con indicar size como argumento y el nombre de la variable sobre la que irá asociada.

p + geom_point(aes(size=awake))

Recordamos, que el tamaño tiene sentido asociarlo a una variable continua o, en todo caso, categórica ordinal, por eso no deberíamos asociarla a vore, tipo de mamífero según su alimentación. De este modo elegimos awake, total de horas de sueño, una variable continua.

Cómo cambiar la transparencia de los puntos

En cuanto a la transparencia de los puntos, en ggplot recibe el nombre de alpha, siguiendo la nomenclatura global del color, y se indica de la misma manera que las estéticas anteriores:

p + geom_point(aes(alpha=awake))

Esta característica suele ser muy útil cuando se trabaja con una gran cantidad de datos, para mostrar dónde se concentra más la información.

Para esos casos, se suele emplear el mismo alpha para todo el conjunto de datos, véase:

p + geom_point(alpha=0.5)

Cómo cambiar el borde de los puntos

Si nos fijamos, cada uno de los puntos de un gráfico de ggplot, tiene un borde muy fino alrededor. Este borde puede ser aumentado, reducido o incluso eliminado a través del argumento stroke.

p + geom_point(shape=21, stroke=3)

Podíamos también haber eliminado el borde los puntos indicando stroke=0.

p + geom_point(stroke=0)

En resumen…

  • geom_point(aes(shape=...)) para modificar la forma de los puntos

  • geom_point(aes(size=...)) para modificar el tamaño de los puntos

  • geom_point(aes(alpha=...)) para modificar la transparencia de los puntos

  • geom_point(stroke=0) para eliminar el borde de todos los puntos

Paula L. Casado
Paula L. Casado
Data Scientist

Científica de datos especializada en visualización de datos.

Relacionado