Modificar rótulos de marcação do eixo X do ggplot em R
- 
          
            Use scale_x_discretepara modificar as etiquetas de marcação do eixo Xggplotem R
- 
          
            Use scale_x_discretecom função personalizada para modificar as etiquetas de marcação do eixo Xggplotem 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)

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)

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)

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)

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