【发布时间】:2020-01-17 23:33:16
【问题描述】:
以下代码使用 scatterplot3d() 函数运行高度、体重和体积的 3D 散点图,其中点是 1-6 之间的类值。角度目前为 45 度,我知道我可以通过改变角度来倾斜绘图。我使用什么代码向左或向右旋转绘图,以便提供绘图的多个视图?
df
# Class height weight volume
# 1 4 0.83 0.85 0.83
# 2 2 0.75 0.80 0.76
# 3 3 0.75 0.80 0.84
# 4 5 0.52 0.59 1
# 5 6 0.52 0.59 0.99
color <- c(rgb(0.68, 0.93, 0.96), rgb(0, 0.74, 0.92), rgb(0.68, 0.86, 0.49), rgb(1, 0.8, 0.3),
rgb(1, 0, 0))
scatterplot3d(x=c(0.0, 0.5, 0.5, 0, 0), y=c(0, 0, 0.5, 0.5, 0), z=c(0, 0, 0, 0, 0), box=T, type='l',
color='grey', grid=F, lwd=2, xlab='height', ylab='', zlab='volume', xlim=c(0, 1), ylim=c(0, 1),
zlim=c(0,1), angle=45)
text(7, 0, 'weight', srt=45)
par(new=T)
scatterplot3d(x=c(0.0, 0.5, 0.5, 0.0, 0.0), y=c(0.5, 0.5, 1, 1, 0.5), z=rep(0,5), box=F, type='l',
color='grey', grid=F, lwd=2,xlab='', ylab='', zlab='', xlim=c(0, 1), ylim=c(0, 1), zlim=c(0,1),
axis=F, angle=45)
par(new=T)
scatterplot3d(x=c(0.5, 1, 1, 0.5, 0.5), y=c(0.0, 0.0, 0.5, 0.5, 0.0), z=rep(0,5), box=F, type='l',
color='grey', grid=F, lwd=2,
xlab='', ylab='', zlab='', xlim=c(0, 1), ylim=c(0, 1), zlim=c(0,1), axis=F, angle=45)
par(new=T)
scatterplot3d(x=c(0.5, 1, 1, 0.5, 0.5), y=c(0.5, 0.5, 1, 1, 0.5), z=rep(0,5), box=F, type='l',
color='grey', grid=F, lwd=2,
xlab='', ylab='', zlab='', xlim=c(0, 1), ylim=c(0, 1), zlim=c(0,1), axis=F, angle=45)
par(new=T)
for (i in 6:2) {
scatterplot3d(height[Class==i], weight[Class==i], volume[Class==i], box=F, pch=c(2,1,0,1,20)[i-1],
color=color[i-1], grid=F,
xlab='', ylab='', zlab='', xlim=c(0, 1), ylim=c(0, 1), zlim=c(0, 1), axis=F, angle=45)
par(new=T)
}
legend(0.2, 4.7, legend=c(paste('Level', 2:6)), pch=c(2,1,0,1,19), col=color, title='Class',
cex=0.70)
【问题讨论】:
-
angle=参数确实会旋转图。尝试 45、135、225 和 315 来查看差异。您不能将 x=0, y=0 放在绘图的后面,但您可以从左向右旋转 180 度。 -
感谢您的建议和对现在才回复的歉意,直到现在我才可以访问 R 来试用它。按照你的建议,我一直在玩各种角度,但情节完全扭曲了。我应该更改代码中每个“angle=”的角度还是只是其中的一部分?您提到我不能将 x=0, y=0 放在情节的后面,我必须更改代码吗?如果是,我不确定我必须将其更改为什么?非常感谢您的建议。
-
我不知道你想做什么。您的代码制作了 4 次相同的图。如果您更改每个图上的角度,您将获得相同数据的 4 个不同视图。如果这不是你想要做的,你将不得不更具体。
-
嗨,所有这些代码只产生一个图。以 scatterplot3d( ) 开头的前几段代码是在立方体的底部/地板上生成轴和 4 个灰色象限。以 scatterplot3d() 开头的最后一段代码将点带入散点图中。如果我用“angle=225”替换所有“angle=45”,它就会变形。也许还需要添加另一行代码来将绘图向左或向右?
标签: r 3d rotation scatter-plot