2013-12-18 4 views
2

Я пытаюсь сделать аккуратные xlim и ylim значениями для участка R. Я хочу: 1) округлить xlim[2] до ближайшего кратного 0,5, что больше максимального значения в векторе значений, и 2) раунда xlim[1] до ближайшего кратного 0,5, что меньше минимального значения в векторе значений.круглый поплавок (x) до ближайшего .5, который есть> x

E.g.

x <- c(1.2, 2, 3.4) 
y <- c(0.7, 2, 3.7) 

# The desired lim values are then 
xlim <- c(1, 3.5) 
ylim <- c(0.5, 4) 
plot(x, y, xlim= xlim, ylim= ylim) 

Заранее благодарим за любые советы!

+0

Спасибо за решение! Оба работают очень хорошо. – HDR

ответ

2
xlim <- c(floor(min(x) * 2)/2, 
      ceiling(max(x) * 2)/2) 
# [1] 1.0 3.5 

ylim <- c(floor(min(y) * 2)/2, 
      ceiling(max(y) * 2)/2) 
# [1] 0.5 4.0 

Уловка заключается в умножении на 2 перед округлением. Полученные значения затем делится на 2.

+1

min() вместо x [1], max() вместо хвоста, вероятно, желательно? – tonytonov

+0

@tonytonov Согласен. Мое решение было ограничено упорядоченными векторами. Благодарю. –

5

pretty будет вычислять эти значения, и вы можете использовать range для выбора конечной точки,

range(pretty(x)) 
[1] 1.0 3.5 
range(pretty(y)) 
[1] 0.5 4.0 
+0

+1 'pretty' намного лучше моего решения. –

+0

'pretty' фактически не отвечает на вопрос OP о округлении до ближайшего .5. 'range (pretty (c (1.4,23.1)))' is '[1] 0 25'. Конечно, это могут быть «лучшие» лимиты, чем 1 и 23,5, но они не являются ограничениями, которые требовал ОП. – shadow

0

R пакет «базовый» имеет функцию для создания аккуратных ценностей - это довольно".

Рассмотрит с помощью этого кода: диапазона (довольно (х)) или диапазона (довольно (у))

+0

Я подозреваю, что это было приостановлено, потому что это то же самое, что и Джеймс. –

+0

Нет проблем, для простых вопросов, всегда есть больше людей, отвечающих в то же время .... –

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