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

それを行うために私が理解できる唯一の方法は、への呼び出しによって作成されたHTMLにカスタムJavaScriptを挿入することgvisTable()です。提供した例のようにEventListenerを使用することはできません。その理由は、現在実装されているeventListenerは、テーブルがクリックされたときにのみ実行されるためです。その前に実行するコードが必要です。挿入するのに最適な場所のように見えるので、jsDrawChart返されたHTMLのセクションにあります。これは、チャートオブジェクトのJS表現が組み立てられる場所です。drawチャートを作成した後、オブジェクトに対して追加の呼び出しを行うことができます。

テーブルオブジェクトのGoogleChartsドキュメントをざっと見ると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 に答える