Comment créer une échelle logarithmique dans ggplot2



Souvent, vous souhaiterez peut-être convertir l’échelle de l’axe des x ou de l’axe des y d’un tracé ggplot2 en une échelle logarithmique.

Vous pouvez utiliser l’une des deux méthodes suivantes pour le faire en utilisant uniquement ggplot2 :

1. Utilisez scale_y_continuous() ou scale_x_continuous()

ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans='log10') +
  scale_x_continuous(trans='log10')

2. Utilisez coord_trans()

ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  coord_trans(y ='log10', x='log10')

Si vous souhaitez formater les étiquettes des axes pour afficher les exposants, vous pouvez utiliser les fonctions du package 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)))

Ce didacticiel montre des exemples d’utilisation pratique de ces fonctions.

Exemple 1 : échelle logarithmique utilisant scale_y_continuous()

Le code suivant montre comment utiliser la fonction scale_y_continuous() pour créer une échelle logarithmique pour l’axe y d’un nuage de points :

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

Échelle logarithmique sur l'axe y de ggplot2

Exemple 2 : échelle logarithmique utilisant coord_trans()

Le code suivant montre comment utiliser la fonction coord_trans() pour créer une échelle logarithmique pour l’axe y d’un nuage de points :

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

Échelle logarithmique ggplot2

Exemple 3 : Étiquettes d’échelle logarithmique personnalisées

Le code suivant montre comment utiliser les fonctions du package scales pour créer une échelle logarithmique pour l’axe y d’un nuage de points et ajouter des étiquettes personnalisées avec des exposants :

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

Échelle logarithmique avec exposants dans ggplot2

Notez que les étiquettes de l’axe Y ont des exposants, contrairement aux deux tracés précédents.

Ressources additionnelles

Le guide complet des titres ggplot2
Un guide complet des meilleurs thèmes ggplot2
Comment créer des tracés côte à côte dans ggplot2

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *