Как сгладить круговой график? - PullRequest
0 голосов
/ 27 июня 2018
x <- sin(1:20)
y <- (dplyr::lag(x)-x)-x
plot(x, y, type="l")

Урожай этот участок:

enter image description here

Как получить гладкую циклическую траекторию? Все функции сглаживания, которые я пробовал, хотят создать одну функцию сглаживания.

Пример 1 (выдает ошибку):

lines(smooth.spline(x, y))

Пример 2 (рисует функцию):

lo <- loess(y~x)
lines(predict(lo), col='red', lwd=2)

Пример 3 (рисует функцию):

xspline(c(x,y), shape=1, border='blue' )

1 Ответ

0 голосов
/ 27 июня 2018

Я думаю, что вы просите как (а) более гладкие кривые, так и (б) цилиндрические / симметричные окружности, верно?

Увеличьте количество очков, чтобы сделать его более плавным. Зафиксируйте соотношение сторон, чтобы оно стало кругом (, т.е. , asp=1).

x <- sin((1:20000) / 1000)
y <- cos((1:20000) / 1000)
plot(x, y, type="l", asp=1)

enter image description here

РЕДАКТИРОВАТЬ, отвечая на комментарии OP ниже. :

Использует dplyr::lag(), увеличивая при этом количество очков. Хотя концептуально не сдвигайте задержку (, т.е. , y должно быть полным значением 1 от x ).

( x = 1, y = 0), ( x = 1,001, y = 0,001), ... , ( x = 20, y = 19)

x <- sin((1:20000) / 1000)
y <- (dplyr::lag(x, 1000)-x)-x
plot(x, y, type="l", asp=1)

enter image description here

Если это не то, что вам нужно, возможно, набросайте рисунок и прикрепите его (например, в MS Paint или Inkscape).

...