实现HighCharts和server.R

时间:2015-06-26 18:06:23

标签: javascript r highcharts shiny rcharts

当我点击HighCharts条形图上的一个条形图时,我试图在单独的div元素中显示一个表格(或可能是另一个图形)。我正在使用Shiny包中的rCharts来创建HighCharts图。

在我的实验到现在为止,我遇到了两个可能的psths。

路径1

我尝试在HighCharts栏/列图API中使用click函数。我试过这样做。

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 dataframe更改为Java脚本可读格式(上面rg1是一个数据帧),但不知道何时何地应该进行转换。

路径2

我使用了session$sendCustomMessage()Shiny.addCustomMessageHandler()个函数。

server.R - &gt; app.js

  

在server.R中:observe({ session$sendCustomMessage(type="newdata", data })

     

在app.js中:Shiny.addCustomMessageHandler("newdata", function(data1) { ... });

chart.js - &gt; server.R

  

在app.js中:Shiny.onInputChange("select", this.data.ele);

     

在server.R中:current <- input$select

上述机制适用于HTML中的所有按钮或其他UI元素。但是,当点击条形图上的条形图时,我正在尝试实现相同的机制。我不知道如何从条形图中提取每个条形图并像我们在current <- input$select中使用它一样使用它。因此,它基本上建立了HighCharts UI元素(内部是有光泽的/ rCharts元素)与服务器之间的通信,以便在单击元素时获取数据。

我遇到了Shiny输入和输出绑定,很难理解它们,也不确定它们在我的特定情况下是否有用。有人可以通过我可以解决问题的方法/解决方案。

1 个答案:

答案 0 :(得分:0)

如果有人正在寻找答案,请转到此question,使用粘贴的方法就像魅力一样,并将数据传递给javascript函数。