数据
df <- structure(list(x = c(93.0257, 91.7141, 90.2897, 88.7434, 87.3439,
88.1854, 89.184, 89.268, 86.9858, 83.4816, 79.6688, 75.8661,
72.8118, 70.6629, 68.7551, 66.4837, 63.7729, 60.6434, 57.282,
53.8787, 50.7307, 47.9352, 45.3046, 42.7569, 40.3978, 38.3338,
36.7586, 35.6803, 34.6447, 33.2999, 31.8119, 30.5851, 29.431,
28.1555, 26.8269, 26.2309, 25.5759, 25.072, 24.2856, 22.8561,
20.5118, 18.0308), y = c(23.4243, 25.6442, 27.7958, 29.8634,
32.0738, 36.5614, 41.7916, 46.6395, 48.9472, 49.506, 49.2499,
48.5368, 48.8578, 51.1613, 54.5913, 57.7283, 60.0539, 60.9977,
60.41, 57.8862, 54.1463, 51.7568, 50.2808, 49.1703, 47.4662,
45.0721, 41.6802, 37.7387, 34.6061, 32.741, 31.3893, 29.7002,
28.0538, 26.6927, 25.4476, 23.4242, 21.6142, 19.7793, 18.2789,
17.2791, 16.7951, 16.1878)), class = "data.frame", row.names = c(NA,
-42L))
cart2polar
假设 0 ,0 原点;我需要知道如何更改它。
我的原点是x和y
y <- 0.23
x <- 81.05
cart2polar <- function(x, y) {
data.frame(theta = sqrt(x^2 + y^2), r = atan2(x,y))
}
您只需从数据中减去原点即可。但是,您当前的功能是错误的。您将
theta
和 r
绕错了方向,并且将 atan2
中的参数绕错了方向。
修正后的函数应该是:
cart2polar <- function(x, y, x0 = 0, y0 = 0) {
x <- x - x0
y <- y - y0
data.frame(r = sqrt(x^2 + y^2), theta = atan2(y, x))
}
在您的情况下,您将按如下方式使用它:
cart2polar(df$x, df$y, x0 = 0.23, y0 = 81.05)