【发布时间】:2018-04-29 14:44:41
【问题描述】:
我有一条曲线,来源于经验数据,我可以得到一个合理的模型。我需要确定曲线与已知中心和半径的圆相交的点 (x, y)。下面的代码说明了这个问题。
x <- c(0.05, 0.20, 0.35, 0.50, 0.65, 0.80, 0.95,
1.10, 1.25, 1.40, 1.55, 1.70, 1.85, 2.00,
2.15, 2.30, 2.45, 2.60, 2.75, 2.90, 3.05)
y <- c(1.52, 1.44, 1.38, 1.31, 1.23, 1.15, 1.06,
0.96, 0.86, 0.76, 0.68, 0.61, 0.54, 0.47,
0.41, 0.36, 0.32, 0.29, 0.27, 0.26, 0.26)
fit <- loess(y ~ x, control = loess.control(surface = "direct"))
newx <- data.frame(x = seq(0, 3, 0.01))
fitline <- predict(fit, newdata = newx)
est <- data.frame(newx, fitline)
plot(x, y, type = "o",lwd = 2)
lines(est, col = "blue", lwd = 2)
library(plotrix)
draw.circle(x = 3, y = 0, radius = 2, nv = 1000, lty = 1, lwd = 1)
【问题讨论】:
-
您是想找到最接近与圆相交的
x的值,还是希望尽可能接近f(x, y) = circle(x, y)的解 -
您应该知道
plotrix::draw.circle()绘制了一个圆,其x 和y 尺寸取决于绘图中x 和y 轴的缩放比例;在您的情况下,圆在 x 方向上的最大值将是 (1,5) [x 半径为 2],但在 y 维度上看起来最大值仅为 1.2 左右。在解决 x 和 y 轴比例确实在匹配单位中的问题时假设是否安全? (例如见MASS::eqscplot) -
我想尽可能接近交叉点坐标。考虑这些坐标的一种方法是将其视为沿 x 轴形成的直角三角形的顶点。谢谢!
-
@Ben Bolker 谢谢!这确实非常有用。我通常使用 ggplot 进行绘图,并且必须考虑您在那里描述的问题。很高兴知道如何使用 draw.circle()
标签: r plot intersection