我已经设法使 d3.js 线+面积图与焦点/上下文刷和平移/缩放同步,这里有一个小例子:
我无法将平移限制在原始域边界处,同时也可以很好地使用画笔。这是为了防止用户在他们的视图中丢失图表。
虽然我尝试手动检测平移何时超出边界,然后设置 zoom.translate([0,0]),例如在这些示例中: d3.js 散点图 - 缩放/拖动边界、缩放按钮、重置缩放、计算中位数 在 D3.js 中缩放或平移时限制域 d3.js 散点图 - 缩放/拖动边界、缩放按钮、重置缩放、计算中位数
...就像我在第 183 行所做的那样:
//If exceed original domain, limit panning by resetting translate
if (x.domain()[0] < x0.domain()[0]) {
zoom.translate([0, 0]);
}
在以下情况下会出现问题:1)在小上下文图中创建画笔区域 2)将大焦点图一直平移到最早日期 3)平移几乎在边界处时图跳
希望有任何帮助以防止发生跳跃,或者是否有任何其他方法可以将平移(以及最终缩小)限制在原始域边界。
关于限制缩小,设置:
var zoom = d3.behavior.zoom().x(x).scaleExtent([1,10]).on("zoom", zoomed);
...不能很好地工作,因为缩小将仅限于画笔区域,而不是图形数据的全部范围。
非常感谢!