假设x和y是均匀分布的,如代码所示:
library(ggplot2)
library(rearrr)
#> Warning: package 'rearrr' was built under R version 4.3.2
x <- runif(2000, min = 0, max = 1)
y <- runif(2000, min = -0.4, max = 0.4)
df <- data.frame(x = x, y = y)
dfr <- rotate_2d(df, -30, origin = c(0.5, 0), x_col = "x", y_col = "y")
ggplot(dfr) + geom_point(aes(x, y)) + geom_smooth(aes(x, y), method = "lm", formula = y ~ x)
字符串
我们可以很容易地做一个线性回归来近似点的轴线:
但是当我们将所有的点围绕中心点旋转一定的Angular 后,线性回归就不能做到了:
ggplot(dfr) + geom_point(aes(x_rotated, y_rotated)) +
geom_smooth(aes(x_rotated, y_rotated), method = "lm", formula = y ~ x)
型
创建于2023-12-31使用reprex v2.0.2
是否有一种方法可以找到旋转Angular (可能还有中心点)并正确绘制红色所示的轴线?
1条答案
按热度按时间fdbelqdn1#
与@SamR的方法相同的想法,但略有不同,因为我使用单独的数据框架拟合值,并使用
geom_polygon
添加置信带,因为旋转下限和上限后不再共享相同的x坐标(因此geom_ribbon
将不再有效):字符串