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

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

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

Вы можете использовать один из следующих двух методов, используя только ggplot2:

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

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

2. Используйте coord_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_continuous()

В следующем коде показано, как использовать функцию scale_y_continuous() для создания логарифмической шкалы для оси 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.