【问题标题】:Plotting 3D region in R在 R 中绘制 3D 区域
【发布时间】:2023-03-15 20:03:01
【问题描述】:

我有三个变量,xyz,我想在 3D 图中绘制以下区域(阴影):

1 < x < 4, 5 < y < 10, -6 <z <-2

有什么办法可以做到吗?

【问题讨论】:

  • 这是由三个平面定义的无限八分圆(3d 空间的八分之一)。你想如何形象化它?我会画一个铅笔素描。
  • 好吧,我不需要可视化整个八分圆!您可以将其切割为特定值。我只想展示该地区应该是什么样子。换句话说,让我们绘制区域1 < x < 4, 5 < y < 10, -6 <z <-2
  • 我尝试了scatterplot3d,但无法获得我想要的结果...
  • 我认为您必须使用quads3d 将您想要的部分组合在一起——请参阅example("quads3d")

标签: r plot 3d


【解决方案1】:

代码如下:

library(rgl)
c3d <- cube3d(color="red",alpha=.1)
c3d$vb[1,] <- c3d$vb[1,] *1.5+2.5
c3d$vb[2,] <- c3d$vb[2,] *2.5+7.5
c3d$vb[3,] <- c3d$vb[3,] * 2 - 4
shade3d(c3d)
axes3d()

棘手的一点:原始立方体c3d 是-1 c3d$vb 中列为8 列。我将原来的角转换成新的角。例如关于 x 轴(c3d$vb 的第一行),我们要将 (-1,1) 转换为 (1, 4)。这是通过 (4-1)/(1-(-1))=1.5 的因子完成的,它将 (-1,1) 转换为 (-1.5, 1.5)。然后通过添加 4-1.5 = 2.5 我们将得到 (1,4)。

如果您对绘图中的坐标轴原点感兴趣,可以在 shade3d(c3d) 之前添加 plot3d(0,0,0) - 我相信有更好的解决方案 - 您将拥有:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2012-07-10
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多