Рисование кругов в R

Я использую пакет plotrix для рисования кругов.

И я не понимаю, что не так с моим кодом... :-(

У меня три балла. Первая точка (1,1) должна быть центром круга. Следующие две точки (1,4) и (4,1) имеют одинаковое расстояние/радиус до центра. Значит, окружность на графике должна проходить через эти точки, верно?

И я не знаю, почему круг выглядит неправильно. Есть объяснение?

  p1 <- c(1,1)
  p2 <- c(4,1)
  p3 <- c(1,4)
  r <- sqrt(sum((p1-p2)^2))

  plot(x=c(p1[1], p2[1], p3[1]),
       y=c(p1[2], p2[2], p3[2]), 
       ylim=c(-5,5), xlim=c(-5,5))
  draw.circle(x=p1[1], y=p1[2], radius=(r))
  abline(v=-5:5, col="#0000FF66")
  abline(h=-5:5, col="#0000FF66")

Взгляните на полученный результат здесь


person Drey    schedule 27.09.2012    source источник
comment
установите соотношение сторон asp в ?plot   -  person baptiste    schedule 27.09.2012


Ответы (1)


Как говорит @Baptiste выше, вы можете использовать plot(...,asp=1). Это будет работать только в том случае, если ваши диапазоны x и y совпадают (поскольку он устанавливает физическое соотношение сторон вашего графика равным 1). В противном случае вы, вероятно, захотите использовать функцию eqscplot из пакета MASS. Аналогичная проблема возникает всякий раз, когда вы пытаетесь сделать тщательные графики геометрических объектов, например. Рисование непересекающихся кругов

Этот график создается путем замены MASS::eqscplot на plot в приведенном выше коде:

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

Обратите внимание, что в зависимости от деталей того, что R думает о конфигурации вашего монитора и т. д., круг может выглядеть немного сплющенным (даже если он проходит через точки), когда вы рисуете в графическом окне R — это было для меня — но должно выглядеть нормально в графическом выводе.

person Ben Bolker    schedule 27.09.2012
comment
Спасибо! Функция MASS eqscplot близка к тому, что мне нужно. Тем не менее, было бы неплохо иметь возможность определять собственные xlim и ylim. - person Drey; 27.09.2012
comment
Сложность заключается в том, что вы, как правило, манипулируете (1) размерами устройства для построения графиков (обычно настраиваются пользователем, но не адаптируются в графической среде R); 2) размеры области рисунка в пределах области построения (зависит от полей и размеров заголовков, аннотаций и т. д.); (3) пользовательские x- и y-ограничения. Соблюдая осторожность, вы можете получить их так, как вы хотите, но немного сложно настроить все это автоматически ... - person Ben Bolker; 27.09.2012