R Shiny HTMLWidget for interactive 3D-histograms

后端 未结 3 1678
逝去的感伤
逝去的感伤 2021-01-27 07:11

I would like to include a 3D dynamic (i.e. one can change its perspective just by moving the plot) histogram widget in a R Shiny application.

Unfortunately I di

相关标签:
3条回答
  • 2021-01-27 07:37

    It's possible with plot3Drgl. Here is an example.

    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)
    
    0 讨论(0)
  • 2021-01-27 07:39

    Many thanks, DSGym. I didn't know this library.

    In my initial message (now amended) I actually forgot to mention the dynamic feature, i.e. the ability to change the perspective of the plot just by moving it with the mouse, like with vis.js-graph3d.

    It seems plots from highcharter cannot do that, or am I mistaken?

    [EDIT]: I just checked with Shiny: it is static.

    0 讨论(0)
  • 2021-01-27 07:40

    My package graph3d is on CRAN now.

    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)
    

    You can customize the tooltips:

    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;",
                           "}"))
    )
    

    I realize I have to add an option to control the size of the axes labels...

    0 讨论(0)
提交回复
热议问题