D3.js 无限使用 d3.svg.brush

D3.js Use d3.svg.brush on an infinite scale

我正在使用 d3.js 并且我想在我的整个 svg canvas 上使用画笔(支持缩放和平移),所以我只是将无限范围放在线性比例中如下:

d3.svg.brush()
    .x(d3.scale.linear().range([-Infinity, Infinity]))
    .y(d3.scale.linear().range([-Infinity, Infinity]))
    ...()

笔刷在整个 sv 上工作,但在使用此 'trick'

时出现一些严重的 javascript 错误
Invalid value for <rect> attribute x="NaN"

工作示例:http://jsfiddle.net/cn010zt3/

知道如何正确执行此操作吗?

D3 比例需要实际值,无法与 Infinity 一起正常工作。无论如何,您不需要使用 Infinity,因为您的 SVG 大小有限——只需使用它即可。完成演示 here.