Как создать логарифмическую шкалу в 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 ')
Пример 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 ')
Пример 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)))
Обратите внимание, что метки оси Y имеют показатели степени, в отличие от двух предыдущих графиков.
Дополнительные ресурсы
Полное руководство по заголовкам ggplot2
Полное руководство по лучшим темам ggplot2
Как создавать параллельные графики в ggplot2