Помимо решения ggplot2 (см. Комментарий gsk3), я хотел бы добавить, что это происходит автоматически в plot (), а также при использовании правильных аргументов, например:
x <- 1:10
y <- exp(1:10)
plot(x,y,log="y")
Вы можете использовать параметр log="x"
для оси X или log="xy"
для обоих.
Если вы хотите отформатировать числа или у вас есть данные в формате журнала, вы можете обойти эту проблему, используя axis (). Несколько интересных функций:
axTicks(x)
дает вам расположение отметок на оси X (x = 1) или оси Y (x = 2)
bquote()
преобразует выражения в язык, но может заменить переменную ее значением. Подробнее о bquote()
в вопросе Латекс и переменные в метке графика в R? .
as.expression()
делает объект языка из bquote()
выражением. Это позволяет axis()
выполнять форматирование, как описано в ?plotmath
. Это не может быть сделано с языковыми объектами.
Пример хорошего форматирования:
x <- y <- 1:10
plot(x,y,yaxt="n")
aty <- axTicks(2)
labels <- sapply(aty,function(i)
as.expression(bquote(10^ .(i)))
)
axis(2,at=aty,labels=labels)
Что дает