Modificar rótulos de marcação do eixo X do ggplot em R

Jinku Hu 30 janeiro 2023
  1. Use scale_x_discrete para modificar as etiquetas de marcação do eixo X ggplot em R
  2. Use scale_x_discrete com função personalizada para modificar as etiquetas de marcação do eixo X ggplot em R
Modificar rótulos de marcação do eixo X do ggplot em R

Este artigo irá apresentar como modificar os rótulos de escala do eixo x ggplot em R.

Use scale_x_discrete para modificar as etiquetas de marcação do eixo X ggplot em R

scale_x_discrete junto com scale_y_discrete são usados ​​para manipulação avançada de rótulos e limites de escala de plotagem. Neste caso, utilizamos scale_x_discrete para modificar os rótulos de escala do eixo x para objetos ggplot. Observe que o primeiro objeto ggplot é um gráfico de barras baseado no conjunto de dados diamantes. O gráfico usa a coluna cut e plota a contagem de cada tipo no eixo y. O eixo x tem o título padrão -cut, que pode ser modificado passando a string como o primeiro argumento de scale_x_discrete. Como alternativa, podemos passar valores de string específicos para cada rótulo, construindo um vetor e atribuindo-o ao parâmetro rótulos. Ambos os gráficos são desenhados lado a lado usando a função grid.arrange, parte do pacote 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)

rótulos de escala de eixo ggplot 1

Outro método útil para modificar os rótulos no eixo x é passar um objeto de função como um parâmetro labels. O próximo trecho de código usa a função abbreviate para encurtar automaticamente os rótulos e, em seguida, desenhar gráficos como duas colunas.

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)

rótulos de escala do eixo ggplot 2

scale_x_discrete funciona de forma semelhante em gráficos diferentes, e a técnica de manipulação de rótulo é aplicável, conforme mostrado no exemplo a seguir. Ou seja, vários gráficos de dispersão são extraídos do conjunto de dados 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)

rótulos de escala do eixo ggplot 3

Use scale_x_discrete com função personalizada para modificar as etiquetas de marcação do eixo X ggplot em R

O parâmetro scale_x_discrete labels pode usar um objeto de função personalizada para modificar cada etiqueta de escala de acordo. Neste caso, implementamos a função capitalize_all que abrevia cada rótulo primeiro e depois converte o caractere inicial da string em letra maiúscula. Observe que as funções integradas paste,toupper, substring e abbreviate são utilizadas para implementar a funcionalidade capitalize_all, mas uma revisão completa desses métodos está fora do escopo deste artigo. As páginas do manual podem ser exibidas usando a notação ?function_name no console 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)

rótulos de escala de eixo 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

Artigo relacionado - R Plot