如何在闪亮页面而不是弹出窗口中呈现 scatter3d
How to render scatter3d inside shiny page instead of popup
我正在考虑在我的 shiny App 中实现 3D 交互式绘图,到目前为止我一直在使用 plotly。然而,plotly 有一个主要缺点,它在渲染时非常慢。
我已经完成检查,尽管涉及大量数据集,但更新的 outplot$plot <- renderPlotly ({.....}) 和 plotlyOutput("plot") 的整个创建过程不到 0.5 秒。这是多年来的已知问题,但似乎仍然是最新的。
因此,我希望使用一个名为 car 的包,也是因为它有很多选项,其中一些是我特别想要的,而其他包中没有。车包信息在这里:http://www.sthda.com/english/wiki/amazing-interactive-3d-scatter-plots-r-software-and-data-visualization
问题是它呈现在一个单独的弹出窗口 window 而不是在闪亮的应用程序中,我想把它放在里面,或者更好的是,添加一个允许用户将它作为弹出窗口的按钮,但是只有在被问到的时候。但是,我无法弄清楚如何将错误插入实际的闪亮页面。
这是我的最小示例,其中包含单个文本元素和图形代码(在我的例子中)一直出现在单独的 window 而不是应用程序中。
install.packages(c("rgl", "car", "shiny"))
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?"),
plotOutput("plot", width = 800, height = 600)
)
server <- (function(input, output) {
output$plot <- renderPlot({
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
})
})
shinyApp(ui = ui, server = server)
还有这个包,scatterplot3d,但不是交互式的
http://www.sthda.com/english/wiki/scatterplot3d-3d-graphics-r-software-and-data-visualization
还有一些 RGL 软件包,但它们有同样的问题(单独 window)并且不提供我正在寻找的选项。
您需要使用一个 rglwidget
,它将最后一个 rgl 图放入 htmlwidget
。它以前在一个单独的包中,但最近已集成到 `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=T)
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
rglwidget()
})
})
shinyApp(ui = ui, server = server)
产生这个:
我正在考虑在我的 shiny App 中实现 3D 交互式绘图,到目前为止我一直在使用 plotly。然而,plotly 有一个主要缺点,它在渲染时非常慢。 我已经完成检查,尽管涉及大量数据集,但更新的 outplot$plot <- renderPlotly ({.....}) 和 plotlyOutput("plot") 的整个创建过程不到 0.5 秒。这是多年来的已知问题,但似乎仍然是最新的。
因此,我希望使用一个名为 car 的包,也是因为它有很多选项,其中一些是我特别想要的,而其他包中没有。车包信息在这里:http://www.sthda.com/english/wiki/amazing-interactive-3d-scatter-plots-r-software-and-data-visualization 问题是它呈现在一个单独的弹出窗口 window 而不是在闪亮的应用程序中,我想把它放在里面,或者更好的是,添加一个允许用户将它作为弹出窗口的按钮,但是只有在被问到的时候。但是,我无法弄清楚如何将错误插入实际的闪亮页面。
这是我的最小示例,其中包含单个文本元素和图形代码(在我的例子中)一直出现在单独的 window 而不是应用程序中。
install.packages(c("rgl", "car", "shiny"))
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?"),
plotOutput("plot", width = 800, height = 600)
)
server <- (function(input, output) {
output$plot <- renderPlot({
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
})
})
shinyApp(ui = ui, server = server)
还有这个包,scatterplot3d,但不是交互式的 http://www.sthda.com/english/wiki/scatterplot3d-3d-graphics-r-software-and-data-visualization
还有一些 RGL 软件包,但它们有同样的问题(单独 window)并且不提供我正在寻找的选项。
您需要使用一个 rglwidget
,它将最后一个 rgl 图放入 htmlwidget
。它以前在一个单独的包中,但最近已集成到 `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=T)
scatter3d(x=cars$speed, y=cars$dist, z=cars$time, surface=FALSE, ellipsoid = TRUE)
rglwidget()
})
})
shinyApp(ui = ui, server = server)
产生这个: