7 trucos para mejorar tu gráfico en R

dataviz tips
Autor/a
Fecha de publicación

29 de diciembre de 2021

Sea cuál sea el tipo de gráfico o el contexto de los datos, estos tips ayudarán a que pases de tener un gráfico “sin más” a un gráfico más llamativo y con mayor impacto. ¡Vamos a ello!

En primer lugar partiremos de un gráfico sobre la audiencia de las principales cadenas de televisión en el minuto de oro del 31 de diciembre en las campanadas 2020. Los datos los hemos tomado de la web de Barlovento Comunicación.

library(ggplot2)
library(showtext)
font_add_google('Permanent Marker')

cadenas <- c('La 1', 'Antena 3', 'TV3', 'Telecinco', 'La Sexta', 'Cuatro', 'TVG')
cuotas <- c(33, 27.5, 44.5, 6.5, 4.3, 1.2, 13.3)
df <- data.frame(cadenas, cuotas)

ggplot(df) +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100, fill=cadenas)) +
  scale_fill_manual(values=c('#483EC3', '#EE7B3E', '#111111', '#479ED2', '#62D43F', '#E33828', '#4FA9B1')) +
  scale_y_continuous(labels = scales::label_percent()) +
  labs(title='Cuotas de antena Campanadas 2020',
       subtitle='minuto 00:00h',
       caption='Fuente: Barlovento Comunicación',
       x='', y='') +
  theme_minimal() +
  theme(legend.position = 'none',
        text=element_text(family = 'Permanent Marker')) -> p
p

1. Elige una gama monocromática

Si el color de los elementos del gráfico es lo más simple posible, hará que se vea más sencillo y el mensaje cause mayor efecto. Es cierto que en este caso, nos vemos tentados a publicar cada barra del color representado por cada cadena de televisión, pero relamente, no es necesario.

p +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC')

2. Elige un fondo oscuro

El fondo oscuro en general, llama más la atención. Aunque la legibilidad de texto y comprensión es mayor cuando se trata de un fondo claro, el oscuro lo utilizamos en medios y todo lo que se ponga sobre él destaque de forma inminente.

p +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC') +
  theme(plot.background = element_rect(fill='#212121'),
        text=element_text(color='#FFFFFF'),
        axis.text = element_text(color='#FFFFFF'))

3. ¿Puedes eliminar algún eje? Entonces, ¡hazlo!

En este caso, está claro. El eje y puede eliminarse añadiendo la información directamente sobre las barras. Por supuesto, no está mal dejarlo, pero aquí podemos eliminarlo. Entonces, ¡hagámoslo!

p +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC') +
  geom_text(aes(label=paste(cuotas, '%'), x=reorder(cadenas, -cuotas), y=cuotas/100), color='#FFFFFF',
            vjust = -0.5, family='Permanent Marker') +
  theme(plot.background = element_rect(fill='#212121'),
        text=element_text(color='#FFFFFF'),
        axis.text = element_text(color='#FFFFFF'),
        axis.text.y = element_blank()) 

4. La cuadrícula, ¿ayuda a la comprensión del mensaje?

Si realmente la cuadrícula o rejilla estorba más que ayuda, elimínala. Esto evitará ruido en la visualización y hará que destaquen más los elementos mostrados en ella.

p +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC') +
  geom_text(aes(label=paste(cuotas, '%'), x=reorder(cadenas, -cuotas), y=cuotas/100), color='#FFFFFF',
            vjust = -0.5, family='Permanent Marker') +
  theme(plot.background = element_rect(fill='#212121'),
        text=element_text(color='#FFFFFF'),
        axis.text = element_text(color='#FFFFFF'),
        axis.text.y = element_blank(),
        panel.grid = element_blank()) 

5. Elige una tipografía simple

La fuente, como en cualquier otra circunstancia, cuanto más simple mejor. En este caso, habíamos elegido una fuente latosa, como puede ser Permanent Maker, por una Sans Serif, limpia y sin remates.

p +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC') +
  geom_text(aes(label=paste(cuotas, '%'), x=reorder(cadenas, -cuotas), y=cuotas/100), color='#FFFFFF',
            vjust = -0.5, family='Bebas Neue') +
  theme(plot.background = element_rect(fill='#212121'),
        text=element_text(color='#FFFFFF', family='Bebas Neue'),
        axis.text = element_text(color='#FFFFFF'),
        panel.grid = element_blank(),
        axis.text.y = element_blank()) 

6. Destaca el título

No te cortes, aumenta el tamaño del título y haz que destaque lo máximo posible. El título es probablemente lo primero que leerá la mayor parte de la audiencia. Es el mensaje principal y una los elementos más importantes del gráfico, así que no dejes que se quede en segundo plano.

p +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC') +
  geom_text(aes(label=paste(cuotas, '%'), x=reorder(cadenas, -cuotas), y=cuotas/100), color='#FFFFFF',
            vjust = -0.5, family='Bebas Neue') +
  theme(plot.background = element_rect(fill='#212121'),
        text=element_text(color='#FFFFFF', family='Bebas Neue'),
        axis.text = element_text(color='#FFFFFF'),
        panel.grid = element_blank(),
        axis.text.y = element_blank(),
        plot.title=element_text(size=30)) 

7. Añade espacio

Los espacios en blanco permiten respirar al gráfico, enfatizar lo que se está mostrando y dejar que la información fluya y destaque por sí misma. Evitar la carga en una visualización ¡siempre es un acierto!

ggplot(df) +
  geom_col(aes(reorder(cadenas, -cuotas), cuotas/100), fill='#14FFEC', width=0.5) +
  geom_text(aes(label=paste(cuotas, '%'), x=reorder(cadenas, -cuotas), y=cuotas/100), color='#FFFFFF',
            vjust = -0.5, family='Bebas Neue') +
  labs(title='Cuotas de antena Campanadas 2020',
       subtitle='minuto 00:00h',
       caption='Fuente: Barlovento Comunicación',
       x='', y='') +
  theme_minimal() +
  theme(legend.position = 'none',
        plot.background = element_rect(fill='#212121'),
        text=element_text(color='#FFFFFF', family='Bebas Neue'),
        axis.text = element_text(color='#FFFFFF'),
        panel.grid = element_blank(),
        axis.text.y = element_blank(),
        plot.margin=margin(2,2,2,2,'cm'),
        plot.title = element_text(margin=margin(10,0,0,0), size=30),
        plot.subtitle = element_text(margin=margin(10,0,20,0)),
        plot.caption = element_text(margin=margin(20,0,0,0))) 

En este caso el espacio lo hemos añadido aumentando el margen del gráfico y en los títulos, y reduciendo el ancho de las barras principales.

Este es el resultado final. Un gráfico con la misma información, mismo mensaje pero más claro y simple.

Contenido relacionado