brush
을 사용하여 사용자가 값 범위를 선택하도록하고 싶습니다. 그러나 이산 값만이 내 응용 프로그램에서 의미가 있으므로 브러시를이 개별 값 (정수)으로 제한하고 싶습니다.브러시를 불연속 범위로 제한
이렇게하는 한 가지 방법은 Ordinal Brushing에 설명 된 방법을 사용하는 것입니다. 이 예에서 브러시 자체는 연속 값을 취할 수 있으며, 그 다음에 서수 스케일의 불연속 값에 매핑됩니다.
브러시를 끌거나 브러쉬를 드래그하는 동안 개별 값으로 스냅하는 브러시를 얻고 싶습니다. target.extent
반올림 한 다음 둥근 범위 (Fiddle) 다시 선택 : 나는 기본적으로 작동하는 무언가를 내놓았다
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))
}
그러나
, 이것은 조금 투박한 느낌을, 그것은 바람직하지 않은 행동을 유도하는 사용자가 브러시를 드래그하는 동안 커서가 브러쉬 가장자리로 이동하여 커서 심볼을 "드래그"에서 "크기 조정"--arrow로 바꿀 수 있습니다.
불연속 범위 만 선택할 수있는 브러시를 더욱 우아하고 강하게 얻을 수있는 방법이 있습니까?
나는 당신이 올바른 길에 있다고 생각합니다. 나는 똑같은 리스너 구현으로 "브러시"대신 "brushend"이벤트를 사용하도록 바이올린을 변경해 보았습니다. 그리고 나는 덜 듣기가 어렵다고 생각합니다. –