【发布时间】:2015-09-13 18:43:37
【问题描述】:
当单击 HighCharts 条形图上的一个条形时,我试图在单独的 div 元素中显示一个表(或可能是另一个图)。我正在使用 Shiny 包中的 rCharts 来创建 HighCharts 图。
到目前为止,在我的实验中,我遇到了两个可能的 psth。
路径 1
我尝试在 HighCharts 条形图/柱形图 API 中使用点击功能。我试过这样做。
observe({ output$plot <- renderChart2({ a <- hPlot(x="id",y="sequence",data=myData,type="column") a$tooltip( animation = 'true', formatter = "#! function() {return '<b>' + 'Frequency of tag_id ' + this.x + '</b>' + ' is ' + this.y;} !#") a$plotOptions(series = list(color = '#388E8E'),column = list(dataLabels = list(enabled = T, rotation = -90, align = 'right', color = '#FFFFFF', x = 4, y = 10),cursor = 'pointer', point=list(events = list(click = func)))) return(a) }) session$sendCustomMessage(type="data", rg1) )}
对于函数 func(应该在单击条时调用)
func <- "#! function() { Shiny.addCustomMessageHandler('data', function(rg1) { var data1 = rg1.series $('.container_subcat').highcharts({ chart: { type: 'column', } xAxis: { categories:(data1) }, title: { text: 'Monthly Average Rainfall' }, series: [{ data :(data1) }] }); })} !#"
我确定这不是绑定数据的方式,但是在查看了几个在线资源后,我在上面的代码中添加了很多代码。我的任何尝试都没有让我微笑。另外,我想如果我应该这样继续,我需要将数据从R数据帧(rg1上面是一个数据帧)更改为Java脚本可读格式,但不知道应该在何时何地进行转换。
路径 2
我使用了session$sendCustomMessage() 和Shiny.addCustomMessageHandler() 函数。
server.R -> app.js
在 server.R 中:
observe({ session$sendCustomMessage(type="newdata", data })在 app.js 中:
Shiny.addCustomMessageHandler("newdata", function(data1) { ... });
chart.js -> server.R
在 app.js 中:
Shiny.onInputChange("select", this.data.ele);在 server.R 中:
current <- input$select
上述机制适用于我们在 HTML 中拥有的所有按钮或其他 UI 元素。但是,当单击条形图上的条时,我试图实现相同的机制。我不知道如何从条形图中提取每个条并像我们在current <- input$select 中使用它一样使用它。因此,它基本上是在 HighCharts UI 元素(又是闪亮/rCharts 元素)和服务器之间建立通信,以便在单击元素时获取数据。
我遇到了 Shiny 输入和输出绑定,很难理解它们,也不确定它们在我的特定情况下是否有用。有人可以引导我完成可以解决我的问题的方法/解决方案。
【问题讨论】:
标签: javascript r highcharts shiny rcharts