Як створити логарифмічну шкалу в 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. Використовуйте koordinate_trans()

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

Якщо ви хочете відформатувати мітки осей для відображення експонент, ви можете скористатися функціями в пакеті масштабів :

 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *