就在不久之前,迈克回答了关于如何嵌入rgl闪亮的问题,但我们似乎偶然发现了另一个问题,
这是代码示例:
library(rgl)
library(car)
library(shiny)
cars$time <- cars$dist/cars$speed
ui <- fluidPage(
hr("how do we get the plot inside this app window rather than in a popup?"),
rglwidgetOutput("plot", width = 800, height = 600)
)
server <- (function(input, output) {
output$plot <- renderRglwidget ({
rgl.open(useNULL=F)
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
rglwidget()
})
})
shinyApp(ui = ui, server = server)
将rgl.open(useNULL=F)
更改为rgl.open(useNULL=T)
将停止显示弹出窗口,但在任何一种情况下,闪亮页面中的rgl都会执行ZOOM,但不会旋转。
似乎鼠标右键单击注册并工作,而鼠标左键单击无法识别....
> sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shiny_1.0.0 car_2.1-4 rgl_0.97.0
loaded via a namespace (and not attached):
[1] Rcpp_0.12.9 knitr_1.15.1 magrittr_1.5 splines_3.3.3 MASS_7.3-45 xtable_1.8-2 lattice_0.20-34
[8] R6_2.2.0 minqa_1.2.4 tools_3.3.3 nnet_7.3-12 pbkrtest_0.4-7 parallel_3.3.3 grid_3.3.3
[15] nlme_3.1-131 mgcv_1.8-17 quantreg_5.33 MatrixModels_0.4-1 htmltools_0.3.5 yaml_2.1.14 lme4_1.1-13
[22] digest_0.6.11 Matrix_1.2-8 nloptr_1.0.4 htmlwidgets_0.8 mime_0.5 SparseM_1.77 jsonlite_1.2
[29] httpuv_1.3.3
答案 0 :(得分:3)
你的场景正在使用mouseMode“polar”(可能是因为scatter3d正在设置它)。该模式目前尚未在rglwidget代码中实现。
解决方法是在调用rglwidget()之前将mouseMode设置为“trackball”,例如在输出$ plot中把这个:
open3d(useNULL=TRUE)
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
par3d(mouseMode = "trackball")
rglwidget()
请注意我的编辑:我已经简化了上面的代码。要设置鼠标左键,只需指定mouseMode的一个组件。
另一个编辑:rgl的最新版本是0.98.8,可以在R-forge上获得,也可能在其他地方(见How do I install the latest version of rgl?),现在支持“极地”鼠标处理。它与R中的行为不同,但它很接近。