Cómo crear fácilmente un gráfico de relieve en R usando ggplot2

Puedes opinar sobre este contenido:
  • 0
  • 0
  • 0
  • 0

Un gráfico de relieve es un tipo de gráfico que muestra las clasificaciones de diferentes grupos a lo largo del tiempo en lugar de valores absolutos para enfatizar el orden de los grupos en lugar de la magnitud del cambio.

Este tutorial explica cómo crear fácilmente un gráfico de relieve en R usando ggplot2.

Ejemplo: creación de un gráfico de relieve

Para crear un gráfico de relieve en R, primero necesitamos cargar dos paquetes: dplyr y ggplot2 :

library (ggplot2) # para crear una 
biblioteca de gráficos de relieve (dplyr) # para manipular datos

A continuación, crearemos algunos datos con los que trabajar:

#set la semilla para que este ejemplo sea reproducible
semillas (10)

data <- data.frame (equipo = rep (LETRAS [1: 5], cada uno = 10),
                   número_aleatorio = runif (50),
                   día = rep (1:10, 5))

datos <- datos%>%
  group_by (día)%>%
  organizar (día, desc (número_aleatorio), equipo)%>% 
  mutate (rango = número_fila ())%>%
  desagrupar ()

cabeza (datos)

# ranking del día número aleatorio del equipo          
# 1 C 0,865 1 1
# 2 B 0,652 1 2
# 3 D 0,536 1 3
# 4 A 0,507 1 4
# 5 E 0,275 1 5
# 6 C 0,615 2 1

Este marco de datos simplemente muestra el «rango» de cinco equipos diferentes en un lapso de tiempo de 10 días.

Podemos usar ggplot2 para crear un gráfico de relieve para visualizar el rango de cada equipo durante cada día durante este período de tiempo:

ggplot (datos, aes (x = día, y = rango, grupo = equipo)) +
  geom_line (aes (color = equipo, alfa = 1), tamaño = 2) +
  geom_point (aes (color = equipo, alfa = 1), tamaño = 4) +
  scale_y_reverse (cortes = 1: nrow (datos))

Gráfico de relieve en R realizado con ggplot2

Este gráfico de relieve muestra los datos en el formato que queremos, pero es bastante feo. Con algunos cambios estéticos, podemos hacer que este gráfico se vea mucho mejor.

Diseñar el gráfico de relieve

Para que el gráfico se vea mejor, podemos usar el siguiente tema creado por Dominik Koch :

my_theme <- function () {

  # Colores
  color.background = "blanco"
  color.text = "# 22211d"

  # Comenzar la construcción del gráfico
  theme_bw (tamaño_base = 15) +

    # Formatear colores de fondo
    tema (panel.background = element_rect (fill = color.background,
                                          color = color.background)) +
    tema (plot.background = element_rect (fill = color.background,
                                          color = color.background)) +
    tema (panel.border = element_rect (color = color.background)) +
    tema (strip.background = element_rect (fill = color.background,
                                          color = color.background)) +

    # Formatea la cuadrícula
    tema (panel.grid.major.y = element_blank ()) +
    tema (panel.grid.minor.y = element_blank ()) +
    tema (axis.ticks = element_blank ()) +

    # Formatea la leyenda
    tema (leyenda.posición = "ninguno") +

    # Dar formato a las etiquetas de título y eje
    theme (plot.title = element_text (color = color.text, size = 20, face = "negrita")) +
    tema (axis.title.x = element_text (tamaño = 14, color = "negro", rostro = "negrita")) +
    tema (axis.title.y = element_text (tamaño = 14, color = "negro", rostro = "negrita",
                                          vjust = 1,25)) +
    tema (axis.text.x = element_text (tamaño = 10, vjust = 0.5, hjust = 0.5,
                                          color = color.text)) +
    tema (axis.text.y = element_text (tamaño = 10, color = color.text)) +
    tema (strip.text = element_text (face = "negrita")) +

    # Márgenes de la parcela
    tema (plot.margin = unit (c (0.35, 0.2, 0.3, 0.35), "cm"))
}

Crearemos el gráfico de relieve nuevamente, pero esta vez eliminaremos la leyenda, agregaremos algunas etiquetas del gráfico y usaremos el tema definido en el código anterior:

ggplot (datos, aes (x = as.factor (día), y = rango, grupo = equipo)) +
  geom_line (aes (color = equipo, alfa = 1), tamaño = 2) +
  geom_point (aes (color = equipo, alfa = 1), tamaño = 4) +
  geom_point (color = "#FFFFFF", tamaño = 1) +
  scale_y_reverse (cortes = 1: nrow (datos)) + 
  scale_x_discrete (descansos = 1:10) +
  tema (leyenda.posición = 'ninguno') +
  geom_text (data = data%>% filter (día == "1"),
            aes (etiqueta = equipo, x = 0.5), hjust = .5,
            fontface = "negrita", color = "# 888888", tamaño = 4) +
  geom_text (data = data%>% filter (día == "10"),
            aes (etiqueta = equipo, x = 10.5), hjust = 0.5,
            fontface = "negrita", color = "# 888888", tamaño = 4) +
  laboratorios (x = 'Día', y = 'Clasificación', título = 'Clasificación del equipo por día') +
  mi tema()

Gráfico de relieve en R con tema personalizado

También podemos resaltar fácilmente una de las líneas agregando un argumento scale_color_manual () . Por ejemplo, en el siguiente código, hacemos que la línea para el equipo A sea morada y la línea para todas las demás líneas gris:

ggplot (datos, aes (x = as.factor (día), y = rango, grupo = equipo)) +
  geom_line (aes (color = equipo, alfa = 1), tamaño = 2) +
  geom_point (aes (color = equipo, alfa = 1), tamaño = 4) +
  geom_point (color = "#FFFFFF", tamaño = 1) +
  scale_y_reverse (cortes = 1: nrow (datos)) + 
  scale_x_discrete (descansos = 1:10) +
  tema (leyenda.posición = 'ninguno') +
  geom_text (data = data%>% filter (día == "1"),
            aes (etiqueta = equipo, x = 0.5), hjust = .5,
            fontface = "negrita", color = "# 888888", tamaño = 4) +
  geom_text (data = data%>% filter (día == "10"),
            aes (etiqueta = equipo, x = 10.5), hjust = 0.5,
            fontface = "negrita", color = "# 888888", tamaño = 4) +
  laboratorios (x = 'Día', y = 'Clasificación', título = 'Clasificación del equipo por día') +
  mi_tema () +
  scale_color_manual (valores = c ('violeta', 'gris', 'gris', 'gris', 'gris'))

Gráfico de relieve con línea resaltada

También podríamos resaltar más de una línea si quisiéramos:

ggplot (datos, aes (x = as.factor (día), y = rango, grupo = equipo)) +
  geom_line (aes (color = equipo, alfa = 1), tamaño = 2) +
  geom_point (aes (color = equipo, alfa = 1), tamaño = 4) +
  geom_point (color = "#FFFFFF", tamaño = 1) +
  scale_y_reverse (cortes = 1: nrow (datos)) + 
  scale_x_discrete (descansos = 1:10) +
  tema (leyenda.posición = 'ninguno') +
  geom_text (data = data%>% filter (día == "1"),
            aes (etiqueta = equipo, x = 0.5), hjust = .5,
            fontface = "negrita", color = "# 888888", tamaño = 4) +
  geom_text (data = data%>% filter (día == "10"),
            aes (etiqueta = equipo, x = 10.5), hjust = 0.5,
            fontface = "negrita", color = "# 888888", tamaño = 4) +
  laboratorios (x = 'Día', y = 'Clasificación', título = 'Clasificación del equipo por día') +
  mi_tema () +
  scale_color_manual (valores = c ('violeta', 'azul acero', 'gris', 'gris', 'gris'))

Gráfico de relieve con dos líneas resaltadas en R

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

La regresión exponencial es un tipo de regresión que se puede utilizar para modelar las siguientes situaciones: 1. Crecimiento exponencial:…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!