Contenido de este artículo
- 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))
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()
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'))
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'))
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
¿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: