Modifica le etichette di spunta dell'asse X di ggplot in R
-
Usa
scale_x_discrete
per modificare le etichette di spunta dell’asse Xggplot
in R -
Usa
scale_x_discrete
con la funzione personalizzata per modificare le etichette di spunta dell’asse Xggplot
in R
Questo articolo introdurrà come modificare le etichette di spunta dell’asse x ggplot
in R.
Usa scale_x_discrete
per modificare le etichette di spunta dell’asse X ggplot
in R
scale_x_discrete
insieme a scale_y_discrete
sono usati per la manipolazione avanzata delle etichette e dei limiti della scala del grafico. In questo caso, utilizziamo scale_x_discrete
per modificare le etichette tick dell’asse x
per gli oggetti ggplot
. Nota che il primo oggetto ggplot
è un grafico a barre basato sul set di dati diamonds
. Il grafico utilizza la colonna cut
e traccia il conteggio di ciascun tipo sull’asse y
. L’asse x
ha il titolo predefinito - cut
, che può essere modificato passando la stringa come primo argomento di scale_x_discrete
. In alternativa, possiamo passare valori di stringa specifici per ogni etichetta costruendo un vettore e assegnandolo al parametro labels
. Entrambi i grafici sono disegnati fianco a fianco usando la funzione grid.arrange
, parte del pacchetto 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)
Un altro metodo utile per modificare le etichette sull’asse x
consiste nel passare un oggetto funzione come parametro labels
. Il prossimo frammento di codice utilizza la funzione abbreviare
per accorciare automaticamente le etichette e quindi disegnare grafici come due colonne.
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
funziona in modo simile su grafici diversi e la tecnica di manipolazione dell’etichetta è applicabile, come mostrato nell’esempio seguente. Vale a dire, diversi grafici a dispersione sono tratti dal set di dati 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)
Usa scale_x_discrete
con la funzione personalizzata per modificare le etichette di spunta dell’asse X ggplot
in R
Il parametro scale_x_discrete
labels
può richiedere un oggetto funzione personalizzato per modificare di conseguenza ogni etichetta di spunta. In questo caso, abbiamo implementato la funzione capitalize_all
che prima abbrevia ogni etichetta e poi converte il carattere iniziale della stringa nella lettera maiuscola. Nota che le funzioni integrate paste
, toupper
, substring
e abbreviate
sono utilizzate per implementare la funzionalità capitalize_all
, ma una revisione completa di questi metodi esula dallo scopo di questo articolo. Le pagine di manuale possono essere visualizzate utilizzando la notazione ?function_name
nella 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