Как создать логарифмическую шкалу в ggplot2


Часто вам может потребоваться преобразовать масштаб оси X или Y графика ggplot2 в логарифмический масштаб.

Для этого вы можете использовать один из двух методов, используя только ggplot2:

1. Используйте Scale_y_continious() или Scale_x_continious().

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

2. Используйте координату_trans().

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

Если вы хотите отформатировать метки осей для отображения показателей степени, вы можете использовать функции из пакета 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)))

В этом руководстве показаны примеры использования этих функций на практике.

Пример 1: Логарифмическая шкала с использованием Scale_y_continous()

Следующий код показывает, как использовать функцию Scale_y_continous() для создания логарифмического масштаба для оси Y диаграммы рассеяния:

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

Логарифмическая шкала по оси Y ggplot2

Пример 2: логарифмическая шкала с использованием coord_trans()

Следующий код показывает, как использовать функцию coord_trans() для создания логарифмического масштаба для оси Y диаграммы рассеяния:

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

Логарифмическая шкала ggplot2

Пример 3: Пользовательские метки в логарифмическом масштабе

В следующем коде показано, как использовать функции в пакете Scales для создания логарифмического масштаба для оси Y диаграммы рассеяния и добавления пользовательских меток с экспонентами:

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

Логарифмическая шкала с показателями в ggplot2

Обратите внимание, что метки оси Y имеют показатели степени, в отличие от двух предыдущих графиков.

Дополнительные ресурсы

Полное руководство по заголовкам ggplot2
Полное руководство по лучшим темам ggplot2
Как создавать параллельные графики в ggplot2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *