rglwidget : Cannot replace previous 3d plot

标签 r 3d shiny rgl

rglwidget 包中的示例相当复杂;我在下面创建了一个简单的 shiny/rglwidget 示例。绘图显示正常,但每次我切换复选框时,都会在浏览器窗口中附加一个新图像。

如何替换/覆盖第一个图?

options(rgl.useNULL = TRUE)
library(shiny)
library(rglwidget)
library(rgl)

app = shinyApp(
  ui = bootstrapPage(
      checkboxInput("rescale", "Rescale"),
      rglwidgetOutput("rglPlot")
  ),
  server = function(input, output) {
    output$rglPlot <- renderRglwidget({
      try(rgl.close()) # added following @user2554330
      if (input$rescale) aspect3d(1,1,10) else aspect3d(1,1,1)
      # High level function following @user2554330: same effect
      # plot3d(rnorm(100), rnorm(100), rnorm(100,sd = 0.1), 
      #     col = rainbow(1000))
      spheres3d(rnorm(100), rnorm(100), rnorm(100,sd = 0.1), col = "red",
                radius = 0.1)
      axes3d()
      rglwidget()

    })
  })
runApp(app)

session 信息:
R version 3.2.2 (2015-08-14)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252   
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] rgl_0.95.1429      rglwidget_0.1.1431 shiny_0.12.2      

loaded via a namespace (and not attached):
 [1] htmlwidgets_0.5.1 R6_2.1.1          rsconnect_0.4.1.9 htmltools_0.2.7  
 [5] tools_3.2.2       yaml_2.1.13       Rcpp_0.12.2       knitr_1.11       
 [9] jsonlite_0.9.19   digest_0.6.8      xtable_1.8-0      Cairo_1.5-9      
[13] httpuv_1.3.3      mime_0.4     

最佳答案

它的作用就像 rgl——当您使用低级命令(spheres3d、axes3d)时,它们会被添加到现有绘图中。如果要替换,最简单的方法是先调用 rgl.close() 。 next3d() 是另一种可能性,尽管它略有不同。

或者,调用高级函数,如 plot3d 或 persp3d。他们在绘图前先清除窗口。

编辑添加:我上面描述的是应该发生的事情。我看到重复的输出;他们是一个错误。我已经在 R-forge 的 0.1.1433 版本中修复了它。

关于rglwidget : Cannot replace previous 3d plot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163627/

相关文章:

r - 在 R 中保存 Leaflet Widget 时出现无效的 UTF-8 错误

actionscript-3 - 如何将重心坐标传递给 AGAL 着色器? (AGAL 线框着色器)

java - 在 swing 应用程序中嵌入 3D View 的库?

python - 使用 Python 显示 3D 散点图中点旁边的坐标

r - 计算 EXCEL 2010 或 R 中一列中的唯一值,有 100 万行

r - R Shiny 应用程序的安全性

r - 如何让用户在 R Shiny 中的 ggplot2 和 gVis 图之间切换?

r - Shiny:如何在 tabPanel 中嵌入 sidebarPanel?

mysql - 使用 R Shiny 中的 rfm 包进行新近度、频率和货币值(value)分析

r - ggplot2 为值和日期/日期时间指定辅助轴