私はgvisMerge
いくつかのオブジェクトをまとめるために使用していgvisAnnotatedTimeLine
ます。すべての gvisAnnotatedTimeLine オブジェクトがすべて同じ RangeSelector を使用することは可能ですか?つまり、1 つのグラフで 2 つの日付/時刻の間の範囲を選択するgvisAnnotatedTimeLine
と、その後、同じ範囲を反映するようにマージされた他のグラフの範囲が自動的に調整されますか?
1 に答える
答えはノーだと確信しています。
gvisMergeが渡された googleVis オブジェクトのパラメーター値を変更できる場合、アクセサー メソッドとミューテーター メソッド (つまり、 getter と setter ) が必要になりますが、どちらも持っていません。
さらに、gVisMergeは純粋に、1 つの HTML ページに正確に2 つのgoogleVis オブジェクトを配置するためのものです (実際、一度に 2 つ以上の googleVis オブジェクトをフォーマットするには、gvisMergeを複数回再帰的に呼び出す必要があります)。
gVisMergeのメソッド シグネチャを見ると、次のようになります。
gvisMerge(x, y, horizontal = FALSE,
tableOptions = "border=\"0\"",
chartid
)
xとy (1 つの HTML ページに結合する 2 つのgoogleVisオブジェクト)、および新しく結合された googleVis オブジェクトが一意の chartid を持つようにするためだけに必要な chartid を除いて、gvisMerge への引数はすべて書式設定またはスタイル設定に関連しています。
horizontal = FALSE : 2 つのグラフを並べて配置するか、上下に配置するか (デフォルト)
tableOptions : 純粋な HTML フォーマット (たとえば、HTML ページの背景色や、gvisMergeを介してページに配置された 2 つのチャート間の間隔を設定するため)
gvisMerge を使用しないソリューション:
googleVis コンストラクターから作成されたチャートは、クラスgvisおよびクラスlistの R オブジェクトです。
gvis オブジェクトの 1 つのコンポーネントはjsDrawChart です。これは、データと適切な Google 視覚化 API 関数をユーザー オプション (googleVis 関数のパラメーター値) と組み合わせます。
アクセスして変更したいのはこの関数に渡された引数ですが、これはgoogleVisオブジェクト (グラフ) をgvisMergeに渡す前に行う必要があります。元の注釈付きタイムライン チャートは 1 つのコンポーネントです。
さらに、googleVis で作成されたチャートは Flash でレンダリングされます。明らかに、ワークフローのできるだけ早い段階で googleVis オブジェクトを変更する必要があります。軸に共通の最小値と最大値を設定する必要があるのは、各グラフに表示されるデータ セットだけなので、難しいことではないと思います。したがって、事前に共通範囲を計算するだけです。
> r1 = range(d1)
> r2 = range(d2)
> r1
[1] 0.23 .75
> r2
[1] 0.11 0.46
各 AnnotatedTimeLine チャートの範囲への呼び出しから返された値を追加し、AnnotatedTimeLine へのすべての呼び出しに対してこの集計された範囲を渡します。これにより、コンストラクターから描画された各チャートに、指定された軸で同じ最小値と最大値が明らかに与えられます。
r12 = append(r1, r2)