【问题标题】:D3 Zoom resets scales selected via brushing.D3 Zoom 重置通过刷子选择的比例。
【发布时间】: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


【解决方案1】:

通过在画笔上添加以下行来解决问题:

zoom.x(xScale)
zoom.translate()  

工作示例是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多