Расширьте предел оси до -1, если эта ось является логарифмической в ​​R

Я делаю следующее:

x = c(0, 1, 2, 3, 4, 5)
y = x ^ 2
plot(x, y, log="y")

Я хочу, чтобы график также показывал мне точку рассеяния в (x, y) = (0, 0).

Я знаю, что log(0) = -Inf. Это будет иметь место, когда я делаю log(x), но здесь я не делаю log(x). Скорее, я просто меняю шкалу оси Y на логарифмическую. Поэтому мне нужно знать, есть ли способ отобразить точку рассеяния (x, y) = (0, 0).


person MM Khan    schedule 06.12.2017    source источник
comment
Замените y[1] на 0.1 и постройте. Затем замените его на 0.0001 или 0.000000001 и повторите попытку — надеюсь, это продемонстрирует, почему ваша первоначальная цель не может быть достигнута — между 1 и 0 по логарифмической шкале бесконечное расстояние.   -  person Marius    schedule 06.12.2017


Ответы (2)


Нет, то, о чем вы спрашиваете, математически невозможно, потому что log(0) = -Inf. Точка (0, 0) не может быть показана на графике в логарифмическом масштабе.

Логарифмическая шкала получается путем логарифмического преобразования значений данных и возведения в степень значений на отметках оси. Например, чтобы отобразить значение 100 в логарифмической шкале 10, вы сначала логарифмически преобразуете 100 в log10(100) = 2, а затем преобразуете соответствующую ось оси из 2 в 10^2 = 100. Таким образом, чтобы отобразить значение 0 на графике в логарифмическом масштабе, вам все равно нужно вычислить log10(0), даже если соответствующий отметке оси будет 10^-Inf = 0.

person Claus Wilke    schedule 06.12.2017

Если ваша цель состоит в том, чтобы иметь нелинейную ось Y и не обязательно логарифмическую шкалу, вы можете следовать чему-то вроде того, что показано ниже.

# transfrom y-values
ny <- sqrt(y) 
# plot the transformed values
plot(x, ny, yaxt='n', ylab = "y")
# label the y-axis 
axis(side = 2, at = ny, labels = y)

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

Кроме того, если вы знаете, чем хотите заменить log(0), вы можете сделать это через ny, но я не советую использовать логарифмическую шкалу, когда есть ноль.

person Suren    schedule 06.12.2017