使用带有Shiny的修补(rgl.snapshot
)rgl版本时,install_github("rgl", "trestletech", "js-class")
失败。
rgl.snapshot
适用于rgl> = 0.95.1247。但是,由于最新rgl的已知问题无法使用闪亮,因此输出是最初在此ticket中报告的内容,快照只是空白/黑色图像。
以下是一个可重复的示例,取自shinyRGL github:
server.R
library(shiny)
library(shinyRGL)
#' Define UI for application that plots random 3d points
#' @author Jeff Allen \email{jeff@@trestletech.com}
shinyUI(pageWithSidebar(
# Application title
headerPanel("Shiny WebGL!"),
# Sidebar with a slider input for number of points
sidebarPanel(
sliderInput("pts",
"Number of points:",
min = 10,
max = 1000,
value = 250),
HTML("<hr />"),
helpText(HTML("Created using <a href = \"http://github.com/trestletech/shinyRGL\">shinyRGL</a>."))
),
# Show the generated 3d scatterplot
mainPanel(
webGLOutput("sctPlot")
)
))
ui.R
# Must be executed BEFORE rgl is loaded on headless devices.
options(rgl.useNULL=TRUE)
library(shiny)
library(shinyRGL)
library(rgl)
xPts <- runif(1000, 0, 1)
yPts <- runif(1000, 0, 1)
zPts <- runif(1000, 0, 1)
#' Define server logic required to generate and 3d scatterplot
#' @author Jeff Allen \email{jeff@@trestletech.com}
shinyServer(function(input, output) {
# Expression that generates a rgl scene with a number of points corresponding
# to the value currently set in the slider.
output$sctPlot <- renderWebGL({
points3d(xPts[1:input$pts],
yPts[1:input$pts],
zPts[1:input$pts])
axes3d()
rgl.snapshot('./test.png', fmt = 'png')
})
})
退出
Warning in rgl.snapshot("./test.png", fmt = "png") : snapshot failed
sessionInfo
# sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server release 6.4 (Santiago)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shinyRGL_0.1.1 shiny_0.12.2 rgl_0.93.963
loaded via a namespace (and not attached):
[1] R6_2.1.1 htmltools_0.2.6 Rcpp_0.12.0 digest_0.6.8
[5] xtable_1.7-4 httpuv_1.3.3 mime_0.3
非常感谢任何帮助。
答案 0 :(得分:1)
shinyRGL的作者不再维护它了,正如自述文件在他的Github回购中说的那样。但是,我最近一直在向rgl添加交互功能。请参阅插图“WebGL中的用户交互”。
它们仍然非常粗糙,并且不使用Shiny,它们直接插入Javascript。我目前正在通过在htmlwidgets框架内编写rgl小部件来重写它们以与Shiny更兼容。目前代码在R-forge的rglwidget包中,但我希望它最终会合并回主rgl包。
编辑添加:
所有代码都在R-forge上的rgl项目页面上,https://r-forge.r-project.org/projects/rgl/。要安装rglwidget,您应该能够运行
install.packages(c("rgl", "rglwidget"), repos="http://R-Forge.R-project.org")
R中的(尽管两个软件包都在开发中,因此有时可能会失败)。
第二次补充:
事实上,它确实失败了。所以你必须手动完成:从R-forge更新rgl,然后使用svn下载rglwidget并从本地副本安装。