Come creare una scala logaritmica in ggplot2
Spesso potresti voler convertire la scala dell’asse x o dell’asse y di un grafico ggplot2 in una scala logaritmica.
Puoi utilizzare uno dei due metodi per farlo utilizzando solo ggplot2:
1. Utilizza scale_y_continuous() o scale_x_continuous()
ggplot(df, aes (x=x, y=y)) + geom_point() + scale_y_continuous(trans=' log10 ') + scale_x_continuous(trans=' log10 ')
2. Usa coordinate_trans()
ggplot(df, aes (x=x, y=y)) + geom_point() + coord_trans(y = ' log10 ' , x=' log10 ')
Se desideri formattare le etichette degli assi per visualizzare gli esponenti, puoi utilizzare le funzioni nel pacchetto scales :
ggplot(df, aes (x=x, y=y)) + geom_point() + scale_y_continuous(trans=' log10 ', breaks= trans_breaks (' log10 ', function (x) 10^x), labels= trans_format (' log10 ', math_format (10^.x)))
Questo tutorial mostra esempi di come utilizzare queste funzioni nella pratica.
Esempio 1: scala logaritmica utilizzando scale_y_continuous()
Il codice seguente mostra come utilizzare la funzione scale_y_continuous() per creare una scala logaritmica per l’asse y di un grafico a dispersione:
library (ggplot2) #create data frame df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18), y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000)) #create scatterplot with log scale on y-axis ggplot(df, aes (x=x, y=y)) + geom_point() + scale_y_continuous(trans=' log10 ')
Esempio 2: scala logaritmica utilizzando coord_trans()
Il codice seguente mostra come utilizzare la funzione coord_trans() per creare una scala logaritmica per l’asse y di un grafico a dispersione:
library (ggplot2) #create data frame df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18), y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000)) #create scatterplot with log scale on y-axis ggplot(df, aes (x=x, y=y)) + geom_point() + coord_trans(y=' log10 ')
Esempio 3: etichette in scala logaritmica personalizzate
Il codice seguente mostra come utilizzare le funzioni nel pacchetto scales per creare una scala logaritmica per l’asse y di un grafico a dispersione e aggiungere etichette personalizzate con esponenti:
library (ggplot2) library (scales) #create data frame df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18), y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000)) #create scatterplot with log scale on y-axis and custom labels ggplot(df, aes (x=x, y=y)) + geom_point() + scale_y_continuous(trans=' log10 ', breaks= trans_breaks (' log10 ', function (x) 10^x), labels= trans_format (' log10 ', math_format (10^.x)))
Si noti che le etichette dell’asse Y hanno esponenti, a differenza dei due grafici precedenti.
Risorse addizionali
La guida completa ai titoli ggplot2
Una guida completa ai migliori temi ggplot2
Come creare grafici affiancati in ggplot2