【问题标题】:Shiny RGL Plot3D: Keep Plot View Orientation On Replot闪亮的 RGL Plot3D:在重新绘制时保持绘图视图方向
【发布时间】:2015-06-08 17:32:03
【问题描述】:

每当我在 RGL plot3D 上重新绘制时,它都会导致绘图的视图方向重置为默认值。

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

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

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

# Replot data here
# ...

# restore settings
par3d(pp)

但是,这并没有恢复剧情方向。

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

【问题讨论】:

  • @JoshOBrien 我在我的问题中链接到那个问题,我明确指出它对我不起作用。
  • 我的错。不过,您能否提供一个可重复的示例?没有它,这可能很难回答。或者您是说即使您链接到的答案中的可重现示例也不适用于您的设置? (FWIW 它仍然适用于我,在 64 位 Windows 7 上使用 R-3.1.3、rgl_0.95.1201)
  • 嗯,特别是我不想做同样的事情。我对保存到磁盘并在不同的项目中重新加载不感兴趣。我只是对在更新图表中的点或更新颜色时保持图表方向感兴趣。

标签: r plot shiny rgl


【解决方案1】:

问题

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

解决方案

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

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

  1. 我定义了 3 个滑块代表围绕 X、Y、Z 轴的旋转,以及一个代表缩放 ZOOM 的附加滑块。
  2. 不要在绘图上旋转/缩放,而是使用滑块。
  3. 关于滑块更改:直接在par3d 中更新旋转
  4. 更新绘图(例如新数据)时,我在原始问题中描述的保存/加载状态的方法现在可以工作,因为par3d 包含旋转/缩放状态。

【讨论】:

    【解决方案2】:

    我不知道这在最近的 rgl 版本中是否发生了变化,但对我来说它是有效的。我使用的是 rgl 版本 0.95.1441。

    定义一个加载数据并调用plot3d()的函数(这里它使用随机数据):

    library(rgl)
    
    newRGLrandom <- function(){
      n <- 10
      x <- sort(rnorm(n))
      y <- rnorm(n)
      z <- rnorm(n) + atan2(x, y)
      plot3d(x, y, z, col = rainbow(n), size=10)
    }
    

    情节以标准方向开始:

    newRGLrandom()
    

    然后我在rgl窗口中手动旋转:

    当我再次调用newRGLrandom() 函数时,它会以相同的旋转显示新图:

    newRGLrandom()
    

    我还可以保存用户轮换:

    uM <- par3d()$userMatrix
    

    稍后将绘图移动到存储的旋转:

    par3d(userMatrix = uM)
    

    保存整个par3d 也适用于我:

    pp <- par3d(no.readonly=TRUE)
    par3d(pp)
    

    我不知道为什么当你尝试它时它不起作用。也许它是特定于操作系统的? 我的sessionInfo() 如下:

    > sessionInfo()
    R version 3.2.2 (2015-08-14)
    Platform: x86_64-apple-darwin13.4.0 (64-bit)
    Running under: OS X 10.11.6 (El Capitan)
    
    locale:
    [1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8
    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    
    other attached packages:
    [1] rgl_0.95.1441
    
    loaded via a namespace (and not attached):
    [1] tools_3.2.2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2019-09-25
      • 2018-10-02
      • 2019-05-20
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多