マウスでズームすると、に接続されている次の関数myZoom
が実行されます。
myZoom.on('zoom', function() {
someElement.attr('transform', 'translate(' + d3.event.translate[0] + ',' + d3.event.translate[1] + ') scale(' + d3.event.scale + ')');
....
// redraw axes, which should stay where they are at.
....
}
マウスやその他のポインティングデバイスを使用せずにズームをシミュレートするには、上記の属性「transform」の値を変更するだけです。簡単。
しかし、問題はこの関数にあります。実際に軸を再描画します。軸のスケールは自動的に再計算されます。d3の次の公式ドキュメントを参照してください。
Zoom.y([y])
ズーム時にドメインを自動的に調整するYスケールを指定します。指定しない場合、現在のyスケールを返します。デフォルトはnullです。スケールのドメインがプログラムで変更された場合は、ズーム動作に再割り当てする必要があります。
プログラムでズームする必要があります(おそらくズームボタンを使用)。ズームイベントを発生させて、軸のスケールが自動的に再計算されるようにするにはどうすればよいですか?