【发布时间】:2014-07-10 03:34:37
【问题描述】:
我已经让缩放和刷子一起工作。唯一的问题是,当我通过刷子在 X 轴上设置特定周期然后尝试使用缩放(在鼠标拖动或鼠标滚轮上)时,它会重置先前选择的比例,因此缩放不会存储 x 轴域通过之前的刷牙设置。
zoomRight = d3.behavior.zoom()
.x(xScale)
.y(yRightScale)
.scaleExtent([1,20])
zoomed = ->
zoomRight.scale(zoom.scale()).translate(zoom.translate())
canvas.select("._x._axis").call xAxis
canvas.select(".axisLeft").call yLeftAxis
canvas.select(".axisRight").call yRightAxis
canvas.select(".y.grid").call make_y_axis().tickSize(-width, 0, 0).tickFormat("")
canvas.select(".line1").attr("d", line1(data))
canvas.select(".line2").attr("d", line2(data))
brush.extent(xScale.domain())
canvas.select(".brush").call(brush)
zoom = d3.behavior.zoom()
.x(xScale)
.y(yLeftScale)
.scaleExtent([1,20]) # 20x times zoom
.on("zoom", zoomed)
完整代码在这里fiddle。如何强制缩放以记住以前的刷牙选择(位置)?
【问题讨论】:
-
在这种情况下,缩放和画笔行为确实不能很好地协同工作,因为它们本质上是在做同样的事情。您需要在画笔上设置缩放平移。
-
谢谢,一如既往地收到您的来信。我最终完全禁用了缩放。
标签: javascript d3.js zooming