ここに小さな例を示して、d3.jsの線+面グラフをフォーカス/コンテキストブラッシングおよびパン/ズームと同期させることができました:
パンニングを元のドメイン境界で停止するように制限するのに問題がありますが、ブラシでもうまく機能します。これは、ユーザーがビューでグラフを見失うのを防ぐためです。
パンニングが境界を超えたことを手動で検出してから、次の例のように zoom.translate([0,0]) を設定しようとしましたが、 d3.js 散布図 - 境界のズーム/ドラッグ、ズーム ボタン、ズームのリセット、中央値の計算 D3.js d3.js 散布図でのズームまたはパン時のドメインの制限 - 境界のズーム/ドラッグ、ズーム ボタン、ズームのリセット、中央値の計算
...ここの 183 行目で行っているように:
//If exceed original domain, limit panning by resetting translate
if (x.domain()[0] < x0.domain()[0]) {
zoom.translate([0, 0]);
}
この問題は次の場合に発生します: 1) 小さなコンテキスト グラフにブラシ領域を作成する 2) 大きなフォーカス グラフを最も古い日付に向けて完全にパンする 3) パンニングがほぼ境界にあるときにグラフがジャンプする
ジャンプが発生しないようにするための助けをいただければ幸いです。または、パン (および最終的にはズームアウトも) を元のドメイン境界に制限する他の方法がある場合は、
ズームアウトの制限については、次のように設定します。
var zoom = d3.behavior.zoom().x(x).scaleExtent([1,10]).on("zoom", zoomed);
...ズームアウトがグラフ データの全範囲ではなくブラシ領域に制限されるため、うまく機能しません。
どうもありがとう!