在 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可以通过运行
找到eventlistenerdemo(EventListener)
答案 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索引的)。