Temas ggplot2 en R (Ejemplo y Galería) | Opciones predeterminadas y personalizadas

Se el primero en calificar

Este artículo explica cómo usar los temas de ggplot2 en el lenguaje de programación R. El tutorial muestra los diferentes temas predeterminados que ya proporciona el paquete ggplot2 .

Además, este tutorial proporciona varios ejemplos para crear y usar un tema personalizado para gráficos ggplot . La creación de un tema personalizado puede hacer que sea mucho más rápido replicar formatos complicados o que sea más fácil aplicar de manera consistente las pautas de la marca de la empresa a sus gráficos.

El índice completo de este tutorial se muestra a continuación:

Nota: Este artículo fue creado en colaboración con Kirby White. Kirby es un consultor e investigador de eficacia organizacional, que actualmente está cursando un doctorado. en la Universidad del Pacífico de Seattle. ¡Puedes leer más sobre Kirby aquí!

Paquetes y datos de ejemplo

Necesitará el tidyversepaquete para este tutorial, que puede instalar install.packages("tidyverse")y cargar con library(tidyverse).

Crearemos una figura simple para usar a lo largo de este tutorial, que almacenaremos en un objeto llamado fig:

fig <- iris %>%  
  ggplot ( aes ( x = Pétalo . Longitud , y = Pétalo . Ancho , color = Especie ) )  + geom_point ( )

Visión general

En ggplot, los «temas» son la manera fácil de cambiar muchas opciones de diseño del gráfico, como líneas de cuadrícula, bordes de paneles, colores de fondo y más. Si traza fig + theme_***(), puede usar cualquiera de los nueve temas precargados para crear gráficos que se ven así:

todos los temas predeterminados

Además de los temas precargados, puede usar la theme()función para modificar docenas de otros atributos, como la relación de aspecto del gráfico, los títulos y el texto de los ejes, la posición y el formato de la leyenda, los subtítulos y más. Recomiendo marcar la página RDocumentation para la theme()función para una fácil referencia para ver más opciones de personalización más allá de este tutorial.

Temas predeterminados

A veces, es posible que desee utilizar el mismo tema preconstruido en todos sus gráficos de ggplot sin necesidad de llamarlo cada vez. Puede establecer el tema predeterminado con este código:

conjunto_tema ( tema_minimal ( ) )
 
higo

fig

ejemplo de tema ggplot2 1

Esto aplicará el tema elegido a todos los gráficos de ggplot durante esta sesión de R.

Si aún desea cambiar algunas cosas sobre el tema, puede usar la función theme_update() para ajustar rápidamente la configuración en su tema predeterminado. Por ejemplo, es posible que desee mostrar solo las líneas de cuadrícula principales en mis gráficos, por lo que modificaré mi tema predeterminado con este código:

theme_update ( panel . grid . minor  = element_blank ( ) )

ejemplo de tema ggplot2 2

Objeto de tema

Establecer y modificar el tema predeterminado no es muy útil si realiza cambios con frecuencia o si está creando muchos gráficos y desea diferentes opciones de tema para cada uno de ellos. Un enfoque alternativo es personalizar y almacenar una theme()función como un objeto R, que puede aplicar fácilmente a su gráfico:

tema_objeto <- tema ( eje . línea . x  = elemento_línea ( color =  "púrpura" , tamaño =  3 , tipo de línea =  "discontinua" ) ,
                      eje _ línea _ y  = element_line ( color =  "naranja" , tamaño =  1 , tipo de línea =  "punteado" ) ,
                      leyenda _ posición  =  "abajo" ,
                      leyenda _ título  = elemento_texto ( cara =  "negrita" ) )
 
 
higo + tema_objeto

fig + theme_object

ejemplo de tema ggplot2 3

Tenga en cuenta que soy consciente de lo terrible que se ve.

Puede agregar más elementos al objeto que solo la theme()función. Aquí, usamos un objeto R para almacenar un tema base y sus modificaciones:

objeto_tema <- tema_clásico ( familia_base =  "serif" , tamaño_base =  15 )  + 
                tema ( panel . cuadrícula . mayor . x  = línea_elemento ( color =  "gris" , tamaño =  . 5, tipo de línea =  " discontinua" )
 
higo + tema_objeto

fig + theme_object

ejemplo de tema ggplot2 4

Función de tema

Para una adaptabilidad aún mayor, puede crear su propia función para devolver uno de los múltiples temas personalizados. Esto puede ser complejo, por lo que debe estar familiarizado con las funciones definidas por el usuario antes de intentar este método. Este método es mejor para cuando necesita un tema complejo o personalizado, pero también necesita poder cambiarlo con el mínimo esfuerzo.

Este ejemplo demuestra cómo crear un tema personalizado que le permita seleccionar rápidamente una de las dos opciones de borde y una de las cuatro opciones de cuadrícula:

tema_personalizado <- función ( borde =  "todos" , cuadrícula =  "ninguno" ) {
 
  rt <- theme_get ( )  #recupera el tema predeterminado
 
 
  # Determina la configuración del borde 
  if ( border ==  "all" ) { 
    rt <- rt + theme ( panel . border  = element_rect ( fill = NA, color =  "black" ) ) 
  } else  if ( border ==  "none" ) { 
    rt <- rt + tema ( panel . borde  = elemento_rect ( relleno =NA, color = NA ) ) 
  }
 
 
  # Determina la configuración de la cuadrícula 
  if ( grid ==  "none" ) { 
    rt <- rt + tema ( panel . grid  = element_blank ( ) ) 
  } else  if ( grid ==  "x-only" ) { 
    rt <- rt + tema ( panel .cuadrícula .principal .y = elemento_en blanco ( ) , _ _ 
                     tablero _ rejilla _ menor _ y  = element_blank ( ) ) 
  } else  if ( grid ==  "y-only" ) { 
    rt <- rt + tema ( panel . grid . major . x  = element_blank ( ) ,
                     tablero _ rejilla _ menor _ x  = element_blank ( ) ) 
  } else  if ( grid ==  "all" ) { 
    rt <- rt + tema ( panel . grid  = element_line ( color =  "gray" , size =  0.5 ) ) 
  }
 
  volver ( rt )
 
}
 
higo + tema_personalizado ( )

rt <- theme_get() #retrieves default theme

# Determines border settings
if(border == «all»){
rt <- rt + theme(panel.border = element_rect(fill = NA, color = «black»))
}else if(border == «none»){
rt <- rt + theme(panel.border = element_rect(fill = NA, color = NA))
}

# Determines grid settings
if(grid == «none»){
rt <- rt + theme(panel.grid = element_blank())
}else if(grid == «x-only»){
rt <- rt + theme(panel.grid.major.y = element_blank(),
panel.grid.minor.y = element_blank())
}else if(grid == «y-only»){
rt <- rt + theme(panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank())
}else if(grid == «all»){
rt <- rt + theme(panel.grid = element_line(color = «gray», size = 0.5))
}

return(rt)

}

fig + custom_theme()

ejemplo de tema ggplot2 5

Ahora que hemos construido nuestra función, podemos cambiar rápidamente entre nuestras configuraciones personalizadas usando los bordes y los argumentos de cuadrícula que incluimos.

higo + tema_personalizado ( borde =  "ninguno" )

ejemplo de tema ggplot2 6

fig + tema_personalizado ( borde =  "todos" , cuadrícula =  "solo x" )

ejemplo de tema ggplot2 7

Más recursos

En Estadisticool, puede encontrar otros artículos sobre temas de ggplot2. La siguiente lista de tutoriales muestra cómo crear diferentes tipos de gráficos, como diagramas de dispersión, diagramas de densidad, diagramas de barras, diagramas de caja, histogramas y diagramas de líneas usando diferentes temas:

Además, puede echar un vistazo a las introducciones a otros paquetes que proporcionan temas adicionales para los diagramas de ggplot2:

Si está buscando consejos generales sobre cómo modificar el diseño y el estilo de los gráficos de ggplot2, puede consultar los siguientes tutoriales:

Alejandro Lugon Administrator

Alejandro Lugón es un economista y escritor especializado en Python y R, conocido por ser el creador del blog Estadisticool. Nacido enxico, Lugón se graduó de la Universidad Autónoma dexico con una Licenciatura en Economía. Desde entonces ha trabajado como economista en varias empresas. Lugón también ha escrito varios libros sobre temas relacionados con la economía, el análisis de datos y la programación. Su blog Estadisticool se ha convertido en un lugar de referencia para los programadores de Python y R. Alejandro Lugón es una inspiración para aquellos que buscan aprender programación y análisis de datos. Su trabajo ha ayudado a muchas personas a entender mejor el uso de la tecnología para hacer sus trabajos.

En este artículo, explicaré cómo usar la función hist() para dibujar un histograma con porcentaje en el lenguaje de programación…