Нарисуйте радианы/градусы в круге в R

Мне трудно создать координаты X, Y круга, а затем нарисовать на нем сегменты линии. В основном то, что я хочу сделать, это нарисовать 360 линий от центра круга к внешней стороне круга с идеальным интервалом. Вот как я это делаю сейчас, но это не работает. Если есть другой способ сделать это, это тоже отлично работает! Также я надеюсь, что степень 0 начинается с левой стороны круга.

t <- seq(0,2*pi,length=360) 
coords <- t(rbind( sin(t)*127.28125, cos(t)*127.28125)) 
plot(coords,type='n',xlim=c(-63.625625,63.625625),ylim=c(0,127.28125)) 
lines(coords)

deg=data.frame(coords[,1],coords[,2])
head(deg)
deg$count=1
deg$degree=1

for(i in 1:nrow(coords)){
if(deg$count[i]<=270){
deg$degree[i]=i-1+90-45
} else {
deg$degree[i]=i-1-270-45
}
}

names(deg)[1] <- "X"
names(deg)[2] <- "Y"

i=1
for(i in 1:19){
segments(0,0,deg$X[deg$degree==((5*(i-1)))],deg$Y[deg$degree==((5*(i-1)))])
cat(((5*(i-1))),'\t')
}

Обновлять:

У меня есть некоторые проблемы с тем, где линии рисуются. По сути, по мере того, как мы идем по кругу, ошибки становятся больше, поэтому, когда происходит пи / 2 радиана, и он направлен прямо вверх, значение немного правее x = 0. Это может быть невозможно получить, но я подумал, что попрошу посмотреть, можно ли это как-то исправить! 45 90 и 135 должны совпадать на линиях.

График


person BaseballR    schedule 03.03.2015    source источник


Ответы (1)


Как насчет этого

th <- seq(0, 2*pi, length.out=360)
r <- 2
x <- r*cos(th)
y <- r*sin(th)

plot(x,y, type="n")
segments(0,0,x,y)

В основном я выбираю th и r в полярном пространстве и конвертирую в декартово.

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

Если вы хотите начать с 0 слева, используйте

    x <- -r*cos(th)

вместо.

person MrFlick    schedule 03.03.2015
comment
Спасибо за ваш ответ, это действительно близко к тому, что я хочу, но у меня есть некоторые проблемы с тем, где проходят линии. По сути, по мере того, как мы идем по кругу, ошибки становятся больше, поэтому, когда происходит пи / 2 радиана, и он направлен прямо вверх, значение немного правее x = 0. Это может быть невозможно получить, но я подумал, что попрошу посмотреть, можно ли это как-то исправить! - person BaseballR; 04.03.2015