3

私はgvisMergeいくつかのオブジェクトをまとめるために使用していgvisAnnotatedTimeLineます。すべての gvisAnnotatedTimeLine オブジェクトがすべて同じ RangeSelector を使用することは可能ですか?つまり、1 つのグラフで 2 つの日付/時刻の間の範囲を選択するgvisAnnotatedTimeLineと、その後、同じ範囲を反映するようにマージされた他のグラフの範囲が自動的に調整されますか?

4

1 に答える 1

3

答えはノーだと確信しています。

gvisMergeが渡された googleVis オブジェクトのパラメーター値を変更できる場合、アクセサー メソッドとミューテーター メソッド (つまり、 getter と setter ) が必要になりますが、どちら持っていません。

さらに、gVisMergeは純粋に、1 つの HTML ページに正確に2 つのgoogleVis オブジェクトを配置するためのものです (実際、一度に 2 つ以上の googleVis オブジェクトをフォーマットするには、gvisMergeを複数回再帰的に呼び出す必要があります)。

gVisMergeのメソッド シグネチャを見ると、次のようになります。

gvisMerge(x, y, horizontal = FALSE,
            tableOptions = "border=\"0\"", 
            chartid
)

xy (1 つの HTML ページに結合する 2 つのgoogleVisオブジェクト)、および新しく結合された googleVis オブジェクトが一意の chartid を持つようにするためだけに必要な chartid を除いて、gvisMerge へ引数はすべて書式設定またはスタイル設定に関連しています。

horizo​​ntal = 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)
于 2012-08-06T07:04:09.397 に答える