【问题标题】:R Shiny HTMLWidget for interactive 3D-histograms用于交互式 3D 直方图的 R Shiny HTMLWidget
【发布时间】:2019-06-20 15:21:57
【问题描述】:

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

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

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

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

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

最好的问候,

奥利维尔

【问题讨论】:

    标签: r shiny 3d histogram htmlwidgets


    【解决方案1】:

    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)
    

    【讨论】:

    • 非常感谢,Stéphane。它工作得很好。尽管如此,我认为 vis.js-graph3d 的替代方案会很有用(例如,用于工具提示等)。
    【解决方案2】:

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

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

    【讨论】:

    • 哇,真是个惊喜,Stéphane!感谢那!我可以用我最初在下周末才想到的数据来看看并测试你的包裹。然后我会告诉你我的反馈。
    • 再次感谢@Stéphane Laurent,感谢您的工作,并为晚于宣布的时间回复您表示歉意。我终于测试了你的包,这是我的第一个反馈:
    • 1.在轴上使用定性数据(例如,x 和 y——在我的例子中是国家和业务线)似乎并不容易/得到支持。 2. 我没有设法使用dataColor.fill 选项将颜色分配给定性因素(例如,x - 国家/地区)。 3. 我猜你没有实现警告/错误消息?
    • 关于上面的第 1 点,我猜想将 R 向量传递给 JavaScript 并使用函数 {x|y|z}ValueLabel 应该可以工作。但我同意设置轴标签大小的选项会很好^^
    【解决方案3】:

    非常感谢,DSGym。我不知道这个库。

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

    似乎 highcharter 的情节不能做到这一点,还是我弄错了?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 2019-10-08
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多