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

R Shiny HTMLWidget for interactive 3D-histograms

我想在 R Shiny 应用程序中包含一个 3D 动态(即只需移动绘图即可改变其视角)直方图小部件。

很遗憾,直到现在我都没有找到。

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

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

你对这个问题有什么看法?

此致,

奥利维尔

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

在我的初始消息(现已修改)中,我实际上忘记提及动态功能,即只需用鼠标移动它就可以改变绘图视角的能力,就像 vis.js-graph3d 一样。

好像highcharter的情节做不到,还是我弄错了?

[编辑]:我刚刚检查了 Shiny:它是静态的。

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)

我的包裹 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;",
                       "}"))
)

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