2016-07-07 25 views
5

d3 3.x,我通常會定義並設置了密碼刷這樣的:如何將刻度應用於d3 v4.0`brush`?

let brushScale = d3.scaleLinear() 
    .clamp(true) 
    .domain([0, 100]) 
    .range([height, 0]); 

let brush = d3.brush() 
    .brushY(brushScale) 
    .extent([0, 10]); 

d3 4.x,我沒有看到相應的功能分至刷關聯。沒有比例尺,我不明白我是如何指定畫筆的整體範圍的。

回答

13

extent的含義已經從V3到V4改變:

let brush = d3.brush() 
    .brushY(brushScale) 
    .extent([0, 10]); 

,因爲你想有一個Y維刷做到這一點。

extent in v3表示刷面積,即刷子所限定的整個區域內的選擇範圍。

extent in v4現在指的是刷子限定的整個區域,而selection是選定區域,以前稱爲extent。 (請注意,可通過d3.brushSelection訪問該選擇,但在刷事件處理程序中更常用作d3.event.selection訪問

另外,在d3.v4中,縮放不再直接與畫筆關聯;而是,畫筆僅操作。在像素區域尺度上都必須的方式應用(上刷設置)和出路(通過刷事件處理程序返回的值),那麼,以前,在d3.v3:

let brush = d3.brush() .brushY(brushScale) .extent([0, 10]);

在d3.v4中變得像這樣:

請注意,不是將所選區域設置爲extent(v3),而是將所選區域設置爲縮放後的像素範圍((v4))。

+0

感謝您闡明這些重要的變化。 –

1

取而代之的是:

let brush = d3.brushY() 
    .extent([0, 10]);