2017-01-30 15 views
7

Przeprowadzam migrację kodu źródłowego współrzędnych równoległych here do najnowszej wersji d3js (d3js 4.5.0). Utknąłem na tej linii:D3js v4: scaleOrdinal nie ma rangePoints()

var x = d3.scale.ordinal().rangePoints([0, width], 1) 

Wydaje się, że w d3js V4 funkcja rangePoints już nie istnieje. Mogę zmienić na d3. scaleOrdinal(), ale ma tylko funkcję range, a nie funkcję rangePoints. Jakaś wskazówka na to?

Odpowiedz

10

W D3 v4, dwa nowe łuski zostały stworzone: scaleBand i scalePoint, który teraz niektóre z cech, które scale.ordinal mieli w wersji 3 (wśród nich rangePoints).

Jest to udokumentowane w changelog:

Podobnie ordinal.rangePoints i metody ordinal.rangeRoundPoints zastąpiono nową podklasą porządkowej skali: wag punktowych. Następujący kod w 3.x:

var x = d3.scale.ordinal() 
.domain(["a", "b", "c"]) 
.rangePoints([0, width]); 

jest odpowiednikiem tego w 4.0:

var x = d3.scalePoint() 
.domain(["a", "b", "c"]) 
.range([0, width]); 

Dlatego skala trzeba tutaj jest scalePoint:

skale punktowe są wariant wagi taśmowej o szerokości pasma ustawionej na zero. Skale punktowe są zwykle używane do wykresów rozrzutu z wymiarem porządkowym lub kategorycznym.

Dlatego, aby zmienić skalę:

var x = scalePoint() 
    .range([0, width]) 
    .padding(.1); 

zwrócić uwagę na padding: w skali punktowej, range akceptuje jedynie tablicę zakres, a nie dopełnienie już.