0

D3partitionR has some fantastic visualisations for hierarchical and sequential data, however it seems to have a major flaw in Shiny.

The D3partitionROutput function (& renderD3partitionR) don't update the plotted object when the output object is updated.

The functions work perfectly on first execution of a graph however the plotted objects can't be reactively updated.

Does anyone know of a fix or workaround as I really like this package's visualisations?

library(shiny)
library(D3partitionR)

path_in=list(list("A","B","C","D"),list("A","B","F","G"),list("A","D"),list("A","B","END"))
value_in=c(15,29,21,34)

# Define UI for application that draws a histogram
ui <- fluidPage(

   # Application title
   titlePanel("Old Faithful Geyser Data"),

   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(
         selectInput("type_in",
                     "Plot type:",
                     choices = c('circleTreeMap', 'partitionChart', 'treeMap')
         )
      ),

      # Show a plot of the generated distribution
      mainPanel(
        D3partitionROutput("part_out")
      )
   )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

   output$part_out <- renderD3partitionR({
     type = input$type_in
     D3partitionR(data=list(path=path_in,value=value_in)
                  , type = type)
   })
}

# Run the application 
shinyApp(ui = ui, server = server)

Update: I found a similar bug here in Rwordcloud that was resolved by modifying the "render" function in Rwordcloud.js. I looked into renderValue in D3partitionR.js and the function doesn't take an input of 'instance' (as is done in Rwordcloud.js) so it seems it doesn't know when to delete / refresh renderValue. I'm an R guy (and have no js experience) so I don't know how the renderValue function should be changed in D3partitionR.js however I'm pretty sure this is the source of the problem.. Help!

0 Answers0