2016-05-12 14 views
2

我想使用highcharter庫顯示一個閃亮的多重條形圖(這已完成)。如何通過單擊高亮顯示的R barplot來對錶進行子集劃分?

我還想顯示一張表格,裏面有圖表中的數據。

我的問題是,如果可以通過使用shiny/R命令來單擊一個條並自動對數據進行子集合並僅顯示引用所選列的數據?

這是我的代碼:

library("shiny") 
library("highcharter") 

    ui <- fluidPage(
     column(width = 8, highchartOutput("hcontainer",height = "500px")) 
    ) 

    server = function(input, output) {  
      output$hcontainer <- renderHighchart({  

      hc <- highchart() %>% 
       hc_xAxis(categories = a$b) %>% 
       hc_add_serie(name = "c", data = a$c) %>% 
       hc_add_serie(name = "d", data = a$d) %>% 
       hc_add_serie(name = "e", data = a$e) %>% 
       hc_plotOptions(series = list(stacking = FALSE)) %>% 
       hc_chart(type = "column") 

       hc   
      })  
     } 

    shinyApp(ui = ui, server = server) 

欲子集中的數據幀的 「a」 通過執行[,column_x],其中column_x處於highchart( 「C」 所選擇的欄,「d 「或」e「)。

我的問題是如何將列選擇的變量發送到server.r?

針對K.羅德

你能告訴我這是爲什麼不工作,當我做:

myClickFunc <- JS("function(event) {Shiny.onInputChange('hcClicked', { x: this.name, y: this.categories });}") 

和:

output$tablecontainer <- renderText({ paste(input$hcClicked$x,input$hcClicked$y) }) 

只是打印input$hcClicked$x

我只需要抓住以下操作: - 點擊在酒吧:其名稱(這是確定)和 類別 - 單擊選擇在圖例中 名稱 - 單擊繪圖背景

這可能嗎? 非常感謝

+0

很可能。你可以給一個樣本數據集和一個閃亮的應用程序,你沒有的部分是僞代碼?通過這種方式,您將清楚如何顯示數據以及顯示位置等。 –

回答

2

這會好嗎?

library("shiny") 
library("highcharter") 

ui <- shinyUI(
    fluidPage(
    column(width = 8, highchartOutput("hcontainer", height = "500px")), 
    column(width = 4, dataTableOutput("tablecontainer")) 
) 
) 

server <- function(input, output) {  

    a <- data.frame(b = LETTERS[1:10], c = 11:20, d = 21:30, e = 31:40) 

    output$hcontainer <- renderHighchart({  

    myClickFunc <- JS("function(event) {Shiny.onInputChange('hcClicked', this.name);}") 

    highchart() %>% 
     hc_xAxis(categories = a$b) %>% 
     hc_add_serie(name = "c", data = a$c) %>% 
     hc_add_serie(name = "d", data = a$d) %>% 
     hc_add_serie(name = "e", data = a$e) %>% 
     hc_plotOptions(series = list(stacking = FALSE, events = list(click = myClickFunc))) %>% 
     hc_chart(type = "column") 

    })  

    output$tablecontainer <- renderDataTable({ 
    if(!is.null(input$hcClicked)){ 
     subset(a, , c("b", input$hcClicked)) 
    } 
    }) 
} 

shinyApp(ui = ui, server = server) 

您可以在圖表上插入任何用於點擊事件的JavaScript函數。我建議進一步閱讀here以找出哪些值也可以從點擊中提取。在這個例子中,我只是通過閃亮的方式將點擊的系列名稱發送到input$hcClicked

+0

你能告訴我在那個鏈接的哪裏可以找到如何發送類別,或者如果我通過點擊圖例(而不是單擊欄)來選擇數據?謝謝!! – hsilva

+1

我認爲沒有好的文檔。但[這裏](http://api.highcharts.com/highcharts#plotOptions.series.events.legendItemClick)你可以找到圖例部分。在這種情況下,你甚至可以使用相同的功能。其餘的是試錯。可能使用'console.log(event);'來查看單擊事件持有的完整信息。 –

相關問題