好吧,首先,这里有一个jsfiddle来说明我想问的问题
所以我试图实现缩放行为.我设法通过设置一个转换到缩放功能来限制缩放(我真的不太明白,从另一个SO问题得到它),以及缩放行为的scaleExtent([1,10])
所以这是缩放行为:
zoom = d3.behavior.zoom()
.x(xScale)
.y(yScale)
.scaleExtent([1, 10])
.on("zoom", zoomed)
Run Code Online (Sandbox Code Playgroud)
这是缩放功能:
zoomed = ->
t = zoom.translate()
s = zoom.scale()
tx = t[0]
ty = t[1]
tx = Math.min(0, Math.max(w * (1-s), t[0]))
ty = Math.min(0, Math.max((h-padding) * (1-s), t[1]))
zoom.translate([tx, ty])
svgContainer.select("g.x.axis").call xAxis
svgContainer.select("g.y.axis").call yAxis
svgContainer.selectAll("line.matched_peak")
.attr("x1", (d) -> return xScale(d.m_mz) )
.attr("y1", h - padding)
.attr("x2", (d) -> return xScale(d.m_mz) )
.attr("y2", (d) -> return yScale(d.m_intensity) )
Run Code Online (Sandbox Code Playgroud)
但是,将scaleExtent设置为
.scaleExtent([1, 10]) ,
使得y比例中值为1的特定点永远不会显示(jsfiddle左侧的第一个).但是设定 …