Modificar las etiquetas de marca del eje X de ggplot en R
-
Utilice
scale_x_discrete
para modificar las etiquetas de marca del eje X deggplot
en R -
Utilice
scale_x_discrete
con la función personalizada para modificar las etiquetas de marca del eje X deggplot
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)
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)
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)
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)
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