每当我在RGL plot3D上进行重新绘图时,都会使绘图的 View 方向重置为默认值。

有谁知道如何保存这些设置,以便在重绘绘图后可以重新应用它们。我尝试了this:

# save settings
pp <- par3d(no.readonly=TRUE)

# initialize plot
plot3d(c(), c(), c(), "", "", "")

# Replot data here
# ...

# restore settings
par3d(pp)

但是,这并没有恢复绘图方向。

编辑:打印出par3d()的结果表明,随着图的旋转和缩放,值没有得到更新,所以我猜这是问题所在。如果人们已经将它与rgl一起使用,则仅对于ShinyRGL可能是一个问题。

最佳答案

问题

rgl图的问题在于,在旋转图时,它不会更改par3d旋转矩阵(与缩放相同)。另外,我找不到任何提示旋转/缩放状态存储位置的文档。因此,我们没有有关该图的当前状态的信息,并且不可能保存/加载该状态。

解决方案

我的解决方案是使用滑块手动控制绘图的旋转/缩放。当这些滑块更改时,我们将手动更新par3d旋转矩阵。

虽然我真的不喜欢这种解决方案,因为它消除了绘图旋转/缩放的许多便利,但这是我在更新后能够保持旋转/缩放状态的唯一方法。

  • 我定义了3个滑块,分别代表围绕X,Y,Z轴的旋转,以及另一个滑块,分别代表缩放ZOOM。
  • 使用滑块而不是在图上旋转/缩放。
  • Slider Change上的
  • :直接在par3d
  • 中更新旋转
  • 在更新绘图(例如新数据)时,我在原始问题中描述的保存/加载状态的方法现在可以使用,因为par3d包含旋转/缩放状态。
  • 关于r - Shiny 的RGL Plot3D : Keep Plot View Orientation On Replot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29435356/

    10-12 20:51