我已经成功地让d3.js折线区域图与焦点/上下文刷选和平移/缩放同步,这里有一个小例子:http://jsfiddle.net/MtXvx/8/。但我在限制平移时遇到了问题,希望它可以停止在原始域边界处,并且与刷选功能良好配合。这是为了防止用户在视图中丢失图形。
虽然我尝试手动检测何时超出边界,然后设置zoom.translate([0,0]),例如在这些示例中: d3.js散点图 - 缩放/拖动边界、缩放按钮、重置缩放、计算中位数 D3.js中缩放或平移时限制域 d3.js散点图 - 缩放/拖动边界、缩放按钮、重置缩放、计算中位数 ...如我在183行中所做的那样。
当以下情况发生时会出现问题: 1)在小上下文图中创建画刷区域 2)将大焦点图向最早的日期滑动 3)当滑动接近边界时图形会跳动。
如果有任何帮助防止跳动发生或限制平移(以及最终缩小)到原始域边界的其他方法,我们将不胜感激。
关于限制缩小,设置:
虽然我尝试手动检测何时超出边界,然后设置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);
...因为缩小的范围将受限于刷子区域,而不是图形数据的全部范围,所以无法很好地工作。
非常感谢!