2015-07-14 3 views
0

У меня есть две переменные, x и yКак я могу получить полный диапазон в метках оси x и y на графике?

x = runif(8, 0, runif(1, 1, 5)) 
y = x^2 

, что я хочу построить. Обратите внимание, что диапазон x (и, следовательно, y=x^2) не всегда одинаковый.

Таким образом, команда

plot(x, y, pch=19, col='red') 

производит

enter image description here

Однако, я не хочу границы вокруг графика, поэтому я использую параметр bty='n' для участка:

plot(x, y, pch=19, col='red', bty='n') 

который производит

enter image description here

Это немного неудачно, имхо, так как я хотел бы, чтобы у оси, чтобы пройти весь путь до 4, а ось х вплоть до 2.

So я и^в xaxp и yaxp параметры в команде plot:

plot(x, y, pch=19, col='red', bty='n', 
    xaxp=c(
     floor (min(x)), 
     ceiling(max(x)), 
     5 
    ), 
    yaxp=c(
     floor (min(y)), 
     ceiling(max(y)), 
     5 
    ) 
) 

enter image description here, который производит

Это немного лучше, но он все еще не показывает весь диапазон. Кроме того, мне показалось приятным, что лабильность по умолчанию использует шаги, которые были похожими на 1,2,3,4 или 0.5,1,1.5,2, а не только на некоторые произвольные фракции.

Я предполагаю, что R имеет некоторый параметр или механизм для построения полного спектра по оси в «по-человечески» моды (0.5,1,1.5 ...), но я не нашел его. Итак, что я мог попробовать?

+0

Вы можете включить 'топоры = FALSE'' в начальном вызове' участка() ', а затем использовать' ось() 'для создания пользовательских осей с клещами и этикетками, где вам нравится использовать«в», например, в = seq (0, 2, 0.5) для вашей оси. – ulfelder

+2

В качестве примечания: всегда устанавливайте семя перед генерированием случайных чисел (например, 'set.seed (1)'), чтобы другие могли полностью воспроизвести ваш вывод. – lukeA

+0

@ lukeA спасибо, я постараюсь улучшить в будущем. –

ответ

0

Try:

plot(x, y, pch=19, col='red', bty='n', xlim=c(min(x),max(x)), 
    ylim=c(min(y),max(y)), axes=FALSE) 
axis(1, at=seq(floor(min(x)), ceiling(max(x)), 0.5)) 
axis(2, at=seq(floor(min(y)), ceiling(max(y)), 0.5)) 

Или, если вы предпочитаете, чтобы жестко закодировать эти диапазоны осей:

axis(1, at=seq(0, 2, 0.5)) 
axis(2, at=seq(0, 4, 0.5)) 

является то, что вы были после?

+1

'ось (1, у = след (пол (мин (х)), потолок (макс (х)), 0,5))' и 'ось (2, при = сл (этаж (мин (у)), потолок (max (y)), 0.5)) 'кажется, даже немного лучше –

+0

А, правильно, я отредактирую ответ, чтобы включить это. – ulfelder

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

  • Нет связанных вопросов^_^