使用rgl包在shinyR上绘制3D图片时遇到一些问题。我的代码在本地Rstudio上没有错误或问题。 3D情节确实如我所料那样出现。但是,每当我通过rsconnect包将它发布到shinyapps.io时,3D绘图都不会显示在网站上。同时,不会发生错误。这让我很困惑。我在互联网上寻找解决方案并上传一个简单的例子进行测试。这是代码:
library(shiny)
library(rgl)
library(rglwidget)
options(rgl.useNULL=TRUE)
open3d(useNULL = TRUE)
ids <- plot3d(rnorm(100), rnorm(100), rnorm(100))[1]
scene <- scene3d()
rgl.close()
ui <- (fluidPage(
checkboxInput("chk", label = "Display", value = FALSE),
rglwidgetOutput("wdg")
))
server <- function(input, output, session) {
options(rgl.useNULL = TRUE)
save <- options(rgl.inShiny = TRUE)
on.exit(options(save))
output$wdg <- renderRglwidget({
rglwidget(scene)
})
}
if (interactive())
shinyApp(ui = ui, server = server)
最后,有错误消息:
rgl.init中的警告(initValue,onlyNULL):
RGL:无法打开X11显示器
警告:'rgl_init'失败,运行rgl.useNULL = TRUE
rglwidget包中的函数已移至rgl。
附加包装:'rglwidget'
从'package:rgl'掩盖以下对象:
playwidget,rglwidget
值[3L]出错:app.R没有返回shiny.appobj对象。
电话:本地... tryCatch - &gt; tryCatchList - &gt; tryCatchOne - &gt;
正如你所看到的,错误信息提到“X11”,我谷歌这只是为了找到所有这些X11问题都与ubanto或mac环境有关(我的是win10)。因此,我找不到有用的答案。我也尝试过capabilities()函数但结果只是说我的X11是假的。我无法弄清楚哪个部分出了问题,因此我列出了所有的信息。
非常感谢任何人可以提供帮助或提供进一步的信息。
答案 0 :(得分:0)
你不应该使用rglwidget
包;它已经过时了。
有关X11的警告即将发布,因为您正试图在Shiny服务器上设置本地窗口。为避免这样做,请在 options(rgl.useNULL = TRUE)
之前使用library(rgl)
。如果您执行此操作,则open3d
来电中无需执行此操作。