D3.js D3-带画笔的可调整大小图表

D3.js D3-带画笔的可调整大小图表,d3.js,responsive,D3.js,Responsive,我已经创建了一个带有笔刷选择的timeseries图表,但我正在尝试调整图表的大小 我需要笔刷选择在调整大小之间保持,以便“焦点”图表在调整大小事件前后显示相同的数据范围 我认为我需要保存所选内容(如t1、t2),然后在调整所有元素的大小后重新应用它,但我不确定实现这一点的最佳方法 我已经阅读了,但找不到任何关于通过编程从t值获取/设置选择的建议 我接到一个电话到brush。需要移动: context.select("g.brush") .call(brush) .call(

我已经创建了一个带有笔刷选择的timeseries图表,但我正在尝试调整图表的大小

我需要笔刷选择在调整大小之间保持,以便“焦点”图表在调整大小事件前后显示相同的数据范围

我认为我需要保存所选内容(如t1、t2),然后在调整所有元素的大小后重新应用它,但我不确定实现这一点的最佳方法

我已经阅读了,但找不到任何关于通过编程从t值获取/设置选择的建议

我接到一个电话到
brush。需要移动

  context.select("g.brush")
    .call(brush)
    .call(brush.move, x.range());
但我不确定如何修改此选项以恢复以前的选择

如果有帮助的话,我已经创建了一个正在工作的小提琴,除了每次调整大小时重置的笔刷选择


首先,在调整大小时-记录宽度变化的比率:

  var widthBefore = width;
  width = svgWidth - margin.left - margin.right;
然后,确定当前笔刷选择

  var brushSelection = null;
  var brushNode = context.select("g.brush").node();
  if (brushNode)
    brushSelection = d3.brushSelection(brushNode);
根据更改比率修改所选内容

  if (brushSelection) {
    brushSelection = brushSelection.map(function(x) {
      return x * (width / widthBefore);
    });
  }
如果没有选择,则返回到有效的内容

  else
    brushSelection = x.range();
然后把这个涂在刷子上

  context.select("g.brush")
    .call(brush)
    .call(brush.move, brushSelection);