我想让用户使用brush
. 但是,只有离散值在我的应用程序中才有意义,所以我想将画笔限制为这些离散值(比如整数)。
一种方法是使用Ordinal Brushing中描述的方法。在该示例中,画笔本身可以采用连续值,然后将其映射到序数刻度的离散值。
我想要一个在用户刷或拖动画笔时捕捉到离散值的画笔。我想出了一些基本可行的方法:四舍五入target.extent
然后重新选择四舍五入的范围(小提琴):
function brush() {
var s = d3.event.target.extent();
if (d3.event.mode === "move") {
var extentlength = Math.round(s[1] - s[0])
d3.event.target.extent([Math.round(s[0] + 0.5) - 0.5,
Math.round(s[0] + 0.5) - 0.5 + extentlength])
} else {
d3.event.target.extent([Math.round(s[0] + 0.5) - 0.5,
Math.round(s[1] + 0.5) - 0.5])
}
d3.event.target(d3.select(this))
}
但是,这感觉有点笨拙,并且会导致不良行为,即当用户拖动画笔时,光标可以悬停在画笔边缘,将光标符号从“拖动”手变成“调整大小”-箭。
是否有一种更优雅、更强大的方式来获取只允许选择离散范围的画笔?