1

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 知识充其量是有限的,所以我不太确定如何集成它。

ps事件监听器可以通过运行找到

demo(EventListener)
4

1 回答 1

2

我能想到的唯一方法是将一些自定义 JavaScript 注入到由调用创建的 HTML 中gvisTable()。您将无法像您提供的示例那样使用 EventListener - 原因是当前实现的 eventListener 仅在单击表时才会执行。您需要在此之前执行您的代码。那么,插入它的最佳位置似乎是在jsDrawChart返回的 HTML 部分中。这是图表对象的 JS 表示被组装的地方。绘制图表后draw,您可以对该对象进行其他调用。

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

我做了以下事情:

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 索引的)。

于 2012-07-04T04:00:08.007 回答