Я хочу, чтобы моя ось Y была масштабирована по экспоненте (вместо логарифмической шкалы)

Скажем, у меня есть следующие данные, которые я хочу построить:

x <- seq(.01, 1, .01)
plot(x)

Большой. Однако я хочу изменить масштаб оси Y. я знаю, что я могу сделать

plot(x, log='y')

Есть ли эквивалент этого для экспоненциального масштабирования?

(Я знаю, что мог бы просто plot(exp(x)), но это часть довольно сложной функции построения графика, которую я пишу, и я хотел бы сделать это необязательным параметром.)

Любая помощь приветствуется!


person Florian    schedule 23.01.2015    source источник
comment
Не простым способом, нет. Вероятно, вы могли бы использовать ggplot2: см. ?coord_trans. (Это необычное требование: не могли бы вы дать немного больше контекста?)   -  person Ben Bolker    schedule 23.01.2015
comment
Контекст в том, что переменная по оси Y имеет диапазон [0, 1]. Однако большинство значений составляют > 0,75 и, следовательно, немного перекрываются. Я надеялся, что смогу немного растянуть верхний диапазон оси, чтобы сделать различия более выраженными. (Не для того, чтобы преувеличить мой эффект, а для большей удобочитаемости.) Мне пришлось бы сделать то же самое с другим графиком, потому что они должны иметь одинаковые значения по оси Y, чтобы можно было легко сравнивать графики между графиками.   -  person Florian    schedule 23.01.2015
comment
В любом случае, если это не выполнимо простым способом, оно, вероятно, того не стоит. Это была бы просто косметическая вещь, которая была бы довольно аккуратной. Спасибо!   -  person Florian    schedule 23.01.2015
comment
на самом деле, для диапазона [0,1] наиболее распространенным преобразованием будет логистическое (которое вы можете сделать, используя coord_trans(y="qlogis"), следуя приведенному ниже примеру @alexforrence...)   -  person Ben Bolker    schedule 24.01.2015


Ответы (1)


Вы можете сделать это в ggplot2, используя coord_trans:

library(scales)
library(ggplot2)

x <- seq(.01, 1, .01)
y <- seq(.01, 1, .01)
data <- data.frame(x, y)
qplot(x, y, data = data) + coord_trans(y = "exp")

введите здесь описание изображения

person alexforrence    schedule 23.01.2015
comment
Думаю, мне, наконец, придется сесть и обдумать ggplot2. Благодарю вас! - person Florian; 23.01.2015
comment
Нет проблем, на сайте R Graphics Cookbook есть несколько замечательных примеров. - person alexforrence; 23.01.2015