0

根据谷歌的说法,在 R 中旋转一个图(具有以下旋转设置)似乎是不可能的。

所以我正在寻找一种方法来做到这一点,但直到现在仍然没有成功。

旋转设置:

  • 旋转中心是绘图的原点 ({0,0})
  • 给定的角度将是 y 轴和绘图之间的角度。

这是一个代码,其中

  • a取决于角度和 x 轴长度。(我认为)
  • b取决于角度和 y 轴长度。(我认为)

speed <- cars$speed
dist <- cars$dist
plot(speed,dist, xlim=c(0,121), ylim=c(0,121))


xTemp <- speed
speed <- speed + (a)
dist <- dist + (b)

par(new=TRUE)
plot(speed,dist, xlim=c(0,121), ylim=c(0,121), col="red")

任何想法ab价值观?

例如,这是一个代码,其中该图从 y 轴旋转了大约 50度(注意这不是真正的旋转。旋转speed后值被扩展。我现在不知道如何修复它。):

speed <- cars$speed
dist <- cars$dist
plot(speed,dist, xlim=c(0,121), ylim=c(0,121))


xTemp <- speed
speed <- speed + dist
dist <- dist - xTemp

par(new=TRUE)
plot(speed,dist, xlim=c(0,121), ylim=c(0,121), col="red")

它给 :

4

2 回答 2

10

只需将旋转矩阵 应用于您的数据。

angle <- pi/3
M <- matrix( c(cos(angle), -sin(angle), sin(angle), cos(angle)), 2, 2 )
plot( as.matrix(cars[,c("speed","dist")]) %*% M )

在不同的例子中会发生什么可能会更清楚:

library(mlbench)
d <- mlbench.smiley()$x
op <- par(mfrow=c(1,2))
plot(d, asp=1)
plot(as.matrix(d) %*% M, col="red", asp=1)
par(op)

回转

于 2013-08-26T10:43:45.250 回答
0

看来我找到了解决方案:

speed <- cars$speed
dist <- cars$dist
angle <- 45
plot(speed,dist, xlim=c(-121,121), ylim=c(-121,121))
speed1 <- double(); dist1=double()
for(i in 1:length(speed)){
    sq <- sqrt((speed[i]*speed[i]) + (dist[i]*dist[i]))
    angleInit <- (180*atan(dist[i]/speed[i]))/pi
    angle2 <- angleInit - angle
    speed1[i] <- cos(pi*angle2/180) * sq
    dist1[i]  <- sin(pi*angle2/180) * sq
}
par(new=TRUE)
plot(speed1,dist1, xlim=c(-121,121), ylim=c(-121,121), col="red")

谢谢

于 2013-08-26T14:54:45.857 回答