Como criar uma escala logarítmica no ggplot2


Freqüentemente, você pode querer converter a escala do eixo x ou do eixo y de um gráfico ggplot2 em uma escala logarítmica.

Você pode usar um dos dois métodos para fazer isso usando apenas ggplot2:

1. Use escala_y_continuo() ou escala_x_continuo()

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

2. Use coordenada_trans()

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

Se quiser formatar os rótulos dos eixos para exibir expoentes, você pode usar as funções do pacote escalas :

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

Este tutorial mostra exemplos de como usar essas funções na prática.

Exemplo 1: Escala logarítmica usando scale_y_continuous()

O código a seguir mostra como usar a função scale_y_continuous() para criar uma escala logarítmica para o eixo y de um gráfico de dispersão:

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

Escala logarítmica no eixo y do ggplot2

Exemplo 2: escala logarítmica usando coord_trans()

O código a seguir mostra como usar a função coord_trans() para criar uma escala logarítmica para o eixo y de um gráfico de dispersão:

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

Escala logarítmica ggplot2

Exemplo 3: rótulos de escala logarítmica personalizados

O código a seguir mostra como usar funções no pacote de escalas para criar uma escala logarítmica para o eixo y de um gráfico de dispersão e adicionar rótulos personalizados com expoentes:

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

Escala logarítmica com expoentes em ggplot2

Observe que os rótulos do eixo Y possuem expoentes, diferentemente dos dois gráficos anteriores.

Recursos adicionais

O guia completo para títulos ggplot2
Um guia completo para os melhores temas ggplot2
Como criar gráficos lado a lado no ggplot2

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *