R сюжет, как начать y с ненулевого значения? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть набор данных, который идет от: 8e41 до ~ 1e44.Я хочу построить график, начиная с 1e41 по оси Y, но используя аргумент: ylim=c(1e41,1e45) не работает для меня.

Вот минимально воспроизводимый код:

x = c(1,2)
y = c(1e41,1e44)
plot(x,y,ylim=c(1e41,1e45))

Ответы [ 2 ]

0 голосов
/ 05 июня 2018
library(ggplot2)
x = c(1,2)
y = c(1e41,1e44)
data = data.frame(x,y)
ggplot(data, aes(x=x, y=log(y))) + geom_point() + ylim(90,150)

Я думаю, что вы должны использовать журнал у, так как он показывает те же данные.

0 голосов
/ 05 июня 2018

Проблема в том, что 1e41 настолько ближе к 0, чем 1e45, что он практически одинаков.Рассматривали ли вы работу с логарифмической шкалой?

plot(x,y,ylim=c(1e41,1e45), log = 'y')

или даже

plot(x, y, log = 'y')

Подумайте об этом по-другому - измените масштаб ваших данных, разделив ваш диапазон на 1e41: c(8e41, 1e44)/ 1e41 - выполучить 8 и 1000. Есть ли существенная разница между началом шкалы с 0 (или 1) против 8?Если вместо этого вы решили разделить на 1e40, вы смотрите на 80 и 10000.Попробуйте следующий код, чтобы увидеть это:

m <- 1e41 # change this as desired
plot(x, y / m)
abline(h = c(0, 1e41 / m))

При изменении m изменяются только цифры на оси Y, относительные позиции не меняются.Посмотрите, насколько близки 0 и 8e41, и вы поймете, почему на самом деле не имеет значения, начинается ли график с 0 или 1e41.Как доля от общей высоты графика, разница составляет 1 / 1000.

Изменение значений, при которых ось помечена

Вот еще один вариант для вас - изменение значений вкоторый сюжет помечен.Для этого необходимо выполнить два шага - сначала удалить метки оси при первоначальном создании графика, а затем добавить те, которые вам действительно нужны:

plot(x, y, yaxt = 'none')
axis(2, c(1e41, seq(1e43, 1e44, 1e43)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...