R Shiny HTMLWidget用于交互式3D直方图

时间:2019-06-20 15:21:57

标签: r shiny 3d histogram htmlwidgets

我想在R Shiny应用程序中包含3D dynamic (即可以通过移动图来更改其视角)直方图小部件。

不幸的是,直到现在我还没有找到任何东西。

到目前为止,我的搜索结果:使用threejs(例如CRAN上的here和GitHub上的there),可以使用许多不同的表示形式(散点图,表面等),但不能使用 3D 直方图。 plot3D和plot3Drgl没有任何R Shiny副本。

除非已经存在某些东西,否则我的意图是从vis.js的一个子库(即graph3d)创建HTMLWidget。

您对此问题有何看法?

最诚挚的问候,

奥利维尔

3 个答案:

答案 0 :(得分:0)

非常感谢,DSGym。我不知道这个图书馆。

在我最初的消息(现在已修改)中,我实际上忘了提到动态功能,即仅通过使用鼠标移动绘图即可更改绘图的角度,就像使用vis.js-graph3d一样。

似乎从高宪章的地块不能做到这一点,还是我误会了?

[EDIT]:我刚刚检查过Shiny:它是静态的。

答案 1 :(得分:0)

plot3Drgl是可能的。这是一个例子。

library(plot3Drgl)
library(shiny)

options(rgl.useNULL = TRUE)

ui <- fluidPage(
  rglwidgetOutput("myWebGL")
)

server <- function(input, output) {
  save <- options(rgl.inShiny = TRUE)
  on.exit(options(save))
  output$myWebGL <- renderRglwidget({
    try(rgl.close())
    V <- volcano[seq(1, nrow(volcano), by = 5), 
                 seq(1, ncol(volcano), by = 5)]  # lower resolution
    hist3Drgl(z = V, col = "grey", border = "black", lighting = TRUE)
    rglwidget()
  })  
}

shinyApp(ui, server)

答案 2 :(得分:0)

我的软件包graph3d现在在CRAN上。

library(graph3d)

dat <- data.frame(x = c(1,1,2,2), y = c(1,2,1,2), z = c(1,2,3,4))
graph3d(dat, type = "bar", zMin = 0, tooltip = TRUE)

您可以自定义工具提示:

graph3d(dat, type = "bar", zMin = 0,
        tooltip = JS(c("function(xyz){",
                       "  var x = 'X: ' + xyz.x.toFixed(2);",
                       "  var y = 'Y: ' + xyz.y.toFixed(2);",
                       "  var z = 'Z: ' + xyz.z.toFixed(2);",
                       "  return  x + '<br/>' + y + '<br/>' + z;",
                       "}"))
)

enter image description here

我意识到我必须添加一个选项来控制轴标签的大小...