rglwidget:无法替换以前的 3d 图
rglwidget: Cannot replace previous 3d plot
包 rglwidget
附带的示例相当复杂;我在下面创建了一个简单的 shiny/rglwidget
示例。情节看起来不错,但每次我切换复选框时,都会在浏览器中附加一张新图像 window。
如何才能replace/overwrite第一个剧情?
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。他们在绘图前清除 window。
编辑补充:我上面描述的是应该发生的事情。我看到了重复的输出;他们是一个错误。我已经在 R-forge 的 0.1.1433 版本中修复了它。
包 rglwidget
附带的示例相当复杂;我在下面创建了一个简单的 shiny/rglwidget
示例。情节看起来不错,但每次我切换复选框时,都会在浏览器中附加一张新图像 window。
如何才能replace/overwrite第一个剧情?
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。他们在绘图前清除 window。
编辑补充:我上面描述的是应该发生的事情。我看到了重复的输出;他们是一个错误。我已经在 R-forge 的 0.1.1433 版本中修复了它。