當我用鼠標放大,下面的函數attacted爲「myZoom」將被執行:D3:火變焦事件(或模擬變焦事件)
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比例,其中 默認爲空。如果比例域以編程方式進行修改,則應將其重新分配給縮放行爲 。
我需要以編程方式縮放(也許使用縮放按鈕)。我如何觸發縮放事件,以便自動重新計算我的座標軸的比例?
即將發佈的d3(3.0版)具有一些新的縮放功能。這可能會幫助你適應你的情況。請參閱:https://github.com/mbostock/d3/commit/f1c87d7e3a02074287326faa46e748543e25a219 – nautat
你見過[編程泛+放大示例](http://bl.ocks.org/3892928)嗎? – mbostock
感謝您的回覆。 @mbostock:在你的例子中,我們只是回到原始域: x.domain([ - width/2,width/2]); y.domain([ - height/2,height/2]); 但我想放大到一些任意級別。 – user1592714