2014-01-18 5 views
7

Предположим, я создал простой сюжет, как это:Установка R участок xlim только с нижней границей

xvalues <- 100:200 
yvalues <- 250:350 
plot(xvalues, yvalues) 

enter image description here

Однако я хотел бы ось х, чтобы начать с 0 и оставьте верхнюю границу той, что вычисляется Р. Как я могу это сделать?

Я знаю, что есть опция для xlim = c (нижняя граница, верхняя граница), но я не знаю, что такое верхняя граница. Кроме того, я, очевидно, не в состоянии позволить верхней границы быть не определено:

> plot(xvalues, yvalues, xlim=c(0)) 
Error in plot.window(...) : invalid 'xlim' value 

Было бы замечательно, если бы у меня не было, чтобы вычислить максимальное значение вектора xvalues ​​для того, чтобы получить верхнюю границу, как кажется расточительным для очень большого вектора данных.

ответ

5

Вы можете использовать один из двух подходов:

Вычисление пределов

xlim <- c(0, max(xvalues)) 

xlim теперь может быть поставлен как аргумент xlim в plot.

xvalues <- 100:200 
yvalues <- 250:350 
plot(xvalues, yvalues, xlim=xlim) 

enter image description here

Пусть par возвращают пределы

Это один немного более сложный, но иногда полезно (массовое убийство в вашем случае, но для полноты картины). Вы печатаете данные один раз, вы получаете границы области графика в координатах пользователя, используя par("usr"). Теперь вы можете использовать их в своем новом сюжете.

plot(xvalues, yvalues, xaxs="i") 
xmax <- par("usr")[2] 
plot(xvalues, yvalues, xlim=c(0,xmax)) 

PS. Я использовал xaxs="i", поэтому результаты будут без малейших расширений на концах.

+0

Спасибо. Что касается использования max() для установки xlim, я бы предпочел не запускать max(), так как кажется расточительным назвать это на очень большом наборе данных. – stackoverflowuser2010

+1

Хм, я не могу придумать, как избежать этого. Но функция 'max' является сверхбыстрой. Для вектора со 100 миллионами записей потребуется максимум менее 200 миллисекунд, попробуйте 'x <- rnorm (1e8); system.time (макс (х)) '. Поэтому ваши данные должны быть ОГРОМНЫМИ, если это будет проблемой. –

+0

Спасибо. Просто кажется пустой тратой процессорных циклов. :П – stackoverflowuser2010

1

вы можете просто установить максимальную для x с помощью макс вас значения:

xvalues <- 1:99 
yvalues <- rep(1,99) 


plot(xvalues, yvalues, xlim = c(0, max(xvalues))) 

enter image description here

Смежные вопросы