一种在R中旋转绘图的方法

Dav*_*vid 0 plot r rotation

根据Google的说法,在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")
Run Code Online (Sandbox Code Playgroud)

任何想法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")
Run Code Online (Sandbox Code Playgroud)

它给 :

Vin*_*ynd 9

只需将旋转矩阵 应用于数据即可.

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

在另一个例子中,发生的事情可能更清楚:

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)
Run Code Online (Sandbox Code Playgroud)

回转

  • 它实际上是一样的:你的例子是角度-pi/4(45度)的旋转,然后乘以"sqrt(2)".我添加了一个让它更清晰的例子. (2认同)