Plotly Drill down не работает должным образом в R блестящей приборной панели - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю над приложением, в котором мне нужно несколько раз развернуть столбчатую диаграмму. Ниже приведен воспроизводимый код:

library(shiny)
library(plotly)
library(shinyWidgets)
library(shinythemes)
library(dplyr)

df <- data.frame(Level1=c("Tax","Tax","Tax","Tax","Non Tax","Non Tax","Non Tax","GIA","GIA","GIA","GIA"), 
                 Level2=c("GST","IT","Customs","GST","SS","GS","SS","Plan","Non_plan","Others","Others"), 
                 Total=c(1000,10000,200,534,724,6451,8335,8635,999,855,6638))
dfcategories<-unique(df$Level1)
ui<- navbarPage(title=span("Drill Down",style= {"color: green;font-size:150%"}),
                theme=shinytheme("spacelab"),
                header = tagList(
                  useShinydashboard()
                ),
                tabPanel("Bar Chart",
                         plotlyOutput("rrbar"), uiOutput("Back")
                ))
server<- function(input,output){
  current_category<-reactiveVal()
  rr1<-reactive({
    if(!length(current_category()))
    {
      return(count(df, Level1, wt=Total ))
    }
    df %>%filter(Level1==current_category())%>% count(Level2,wt=Total)
  })

  output$rrbar<- renderPlotly({
    d<-setNames(rr1(),c("x","y"))
    print(d)
    plot_ly(d) %>% 
      add_bars(x=~x,y =~y,color=~x)
  })

  observe({
    cd<-event_data("plotly_click")$x

    if(isTRUE(cd %in% dfcategories)) current_category(cd)
  })
  output$Back <- renderUI({
    if (length(current_category())) 
      actionButton("clear", "Back", icon("chevron-left"))
  })
  observeEvent(input$clear, current_category(NULL))
}
shinyApp(ui,server)

Во время выполнения вышеуказанного кода он создает две гистограммы: 1. Первая гистограмма будет находиться между уровнем 1 против общей 2. При нажатии на любую категорию на уровне 1, вторая строка график будет между Уровнем 2 (ниже Уровня 1) 1 против Всего.

На втором графике только ось X должна иметь только Уровень 2 выбранного Уровня1. Но мой код выдает все категории уровня 2 независимо от уровня 1. Результат Drill down . Ось X должна иметь только SS и GS. Почему в нем есть все категории уровня 2 ??1010*

Где я ошибаюсь? Любая помощь? Заранее спасибо

...