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 ')

Scala logaritmica sull'asse y di ggplot2

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 ') 

Scala logaritmica ggplot2

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))) 

Scala logaritmica con esponenti in ggplot2

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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *