Modificar las etiquetas de marca del eje X de ggplot en R

Jinku Hu 30 enero 2023
  1. Utilice scale_x_discrete para modificar las etiquetas de marca del eje X de ggplot en R
  2. Utilice scale_x_discrete con la función personalizada para modificar las etiquetas de marca del eje X de ggplot en R
Modificar las etiquetas de marca del eje X de ggplot en R

Este artículo presentará cómo modificar las etiquetas de marcación del eje x ggplot en R.

Utilice scale_x_discrete para modificar las etiquetas de marca del eje X de ggplot en R

scale_x_discrete junto con scale_y_discrete se utilizan para la manipulación avanzada de las etiquetas y los límites de la escala de la parcela. En este caso, utilizamos scale_x_discrete para modificar las etiquetas de marca del eje x para los objetos ggplot. Observe que el primer objeto ggplot es un gráfico de barras basado en el conjunto de datos diamonds. El gráfico utiliza la columna cut y traza el recuento de cada tipo en el eje y. El eje x tiene el título predeterminado -cut, que se puede modificar pasando la cadena como primer argumento de scale_x_discrete. Alternativamente, podemos pasar valores de cadena específicos para cada etiqueta construyendo un vector y asignándolo al parámetro labels. Ambos gráficos se dibujan uno al lado del otro usando la función grid.arrange, parte del paquete gridExtra.

library(ggplot2)
library(gridExtra)

p1 <- ggplot(diamonds, aes(cut)) + geom_bar(fill = "orange") + scale_x_discrete("Cut")
p2 <- p1 + scale_x_discrete("Cut Type", labels = c("Fair" = "F","Good" = "G", "Very Good" = "VG","Premium" = "P","Ideal" = "I"))

grid.arrange(p1, p2, ncol = 2)

ggplot eje tick etiquetas 1

Otro método útil para modificar las etiquetas en el eje x es pasar un objeto de función como un parámetro de labels. El siguiente fragmento de código utiliza la función abreviar para acortar automáticamente las etiquetas y luego dibujar gráficos en dos columnas.

library(ggplot2)
library(gridExtra)

p1 <- ggplot(diamonds, aes(cut)) + geom_bar(fill = "orange") + scale_x_discrete("Cut")
p2 <- p1 + scale_x_discrete("Cut Type", labels = c("Fair" = "F","Good" = "G", "Very Good" = "VG","Premium" = "P","Ideal" = "I"))
p3 <- p1 + scale_x_discrete("Cut Type", labels = abbreviate)

grid.arrange(p2, p3, ncol = 2)

etiquetas de marcación del eje ggplot 2

scale_x_discrete funciona de manera similar en diferentes gráficos, y la técnica de manipulación de etiquetas es aplicable, como se muestra en el siguiente ejemplo. Es decir, se extraen varios diagramas de dispersión del conjunto de datos mpg.

library(ggplot2)
library(gridExtra)

p1 <- ggplot(mpg, aes(manufacturer, cty)) + geom_point()

p2 <- ggplot(mpg, aes(manufacturer, cty)) + geom_point() +
  scale_x_discrete(labels = abbreviate)

p3 <- ggplot(mpg, aes(manufacturer, cty)) + geom_point(colour = "blue") +
  scale_x_discrete(labels = abbreviate)

grid.arrange(p1, p2, p3, nrow = 3)

etiquetas de marcación del eje ggplot 3

Utilice scale_x_discrete con la función personalizada para modificar las etiquetas de marca del eje X de ggplot en R

El parámetro scale_x_discrete labels puede tomar un objeto de función personalizado para modificar cada etiqueta de marca en consecuencia. En este caso, implementamos la función capitalize_all que abrevia cada etiqueta primero y luego convierte el carácter inicial de la cadena a la letra mayúscula. Tenga en cuenta que las funciones integradas paste,toupper, substring y abbreviate se utilizan para implementar la funcionalidad capitalize_all, pero una revisión completa de estos métodos está fuera del alcance de este artículo. Las páginas del manual se pueden mostrar usando la notación ?function_name en la consola R.

library(ggplot2)
library(gridExtra)

capitalize_all <- Vectorize(function(x) {
  s <- abbreviate(x)
  paste(toupper(substring(s, 1,1)), substring(s, 2), sep="", collapse=" ")
})

ggplot(mpg, aes(manufacturer, cty)) + geom_point(aes(colour = trans)) +
  scale_x_discrete(labels = capitalize_all)

etiquetas de marcación del eje ggplot 4

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Plot