使用事件触发器选项和Javascript代码进行R gvisTable预选

时间:2012-07-04 03:00:03

标签: javascript r google-visualization

R 中,我希望为gvisTable设置输出选择,以便突出显示特定的行或列。

例如,我有以下代码:

a <- as.data.frame(matrix(1:100, nrow=10))

plot(gvisTable(a))

并且直到点击,然后在第4行,突出显示。

有没有办法在运行绘图功能时预先选择第4行,即它会自动突出显示第4行。

查看googleVis的插图后,似乎有一个事件监听器和事件触发器,可以在选项中插入一些javascript代码,以便更改输出。这是通过使用选项gvis.listener.jscode完成的。触发器是否有等效的事件来触发事件。我认为javascript代码需要使用类似setSelection()的内容,但我的Javascript知识最多也是有限的,因此我不太清楚如何集成它。

p.s可以通过运行

找到eventlistener
demo(EventListener)

1 个答案:

答案 0 :(得分:2)

我能想到的唯一方法是将一些自定义JavaScript注入到gvisTable()调用创建的HTML中。您将无法使用EventListener作为您提供的示例 - 原因是当前实现的eventListener仅在单击表时执行。在此之前,您需要执行代码。它看起来是插入它的最佳位置,然后,在返回的HTML的jsDrawChart部分中。这是图表对象的JS表示汇编的地方。在draw图表之后,您可以对该对象进行其他调用。

快速查看表对象的Google Charts documentation表明您在Javascript中可以使用一个很好的setSelection()函数,假设您使用了正确的参数格式。

我做了以下事情:

mytab <- (gvisTable(a,chartid="myTable"))
#you just want to add the following line of JS before the close bracket in the jsDrawChart function.
# chart.setSelection([{'row':2, 'column':null}]);

#in my case, that turned out to be the following:
mytab$html$chart["jsDrawChart"] <- "\n// jsDrawChart\nfunction drawChartmyTable() {\n  var data = gvisDatamyTable();\n  var options = {};\noptions[\"allowHtml\"] = true;\n\n     var chart = new google.visualization.Table(\n       document.getElementById('myTable')\n     );\n     chart.draw(data,options);\n  chart.setSelection([{'row':2, 'column':null}]);   \n\n}\n  \n"

通过使用RegEx在关闭括号之前自动插入额外的JS行或修改GoogleVis函数的来源,您当然可以使其更加健壮。

但是一旦我添加了JS系列,我现在可以运行plot(mytab)并让它自动选择我想要的行(请记住它是0索引的)。