R刻度圆,轴不等

时间:2017-04-20 19:35:48

标签: r math plot drawing

我想在笛卡尔坐标系上绘制一个圆,其中x-axis的间隔不等于y-axis的间隔。

例如,请参阅附加的图片,其中x位于[0 ... 40]区间,y位于[90 ... 107]区间。

Brown Motion with circle

下面是创建图像所需的全功能代码。请记住,布朗运动每次都是随机的,给出另一个y-axis间隔,因此是一个不同的扭曲圆。

library(sde)

#  brown motion
brown.motion <- BM(x=100, t0=0, T=40, N=100) # get brownian motion
# plot bronwian motion
plot(brown.motion, main='Brownian Motion with circle', ylab='Value', xlab='Time')

#  circle
# define the points
x1 <- 21
x2 <- 26
y1 <- max(brown.motion) - (max(brown.motion) - min(brown.motion)) / 2
y2 <- max(brown.motion) - (max(brown.motion) - min(brown.motion)) / 3

# calculate the line
m <- (y2 - y1) / (x2 - x1)
xx <- seq(x1, x2, by=0.02)
yy <- m * xx + (y1 - m * x1)

# plot the line
lines(xx, yy)

# plot the center
points(xx[round(length(xx) / 2)], yy[round(length(yy) / 2)])

# calculate the length
eukl.norm.vec <- function(x) sqrt(sum(x^2)) # function euclidean norm
vec1 <- c(x1, y1)
vec2 <- c(x2, y2)
length <- eukl.norm.vec(vec2 - vec1)

# calculate radius for circle
real.radius <- length / 2

# calculate circle
circle.degree <- seq(0, 2*pi, by=0.01)
circle.x <- real.radius * cos(circle.degree) + x1 + real.radius
circle.y <- real.radius * sin(circle.degree) + y1 + real.radius

# plot circle
lines(circle.x, circle.y)

如何围绕中心(单点)绘制圆圈,使圆圈接触两端的线条(线条完全在圆圈内)?

我考虑过乘以一个因子,但到目前为止找不到合适的一个。

0 个答案:

没有答案