Je vois beaucoup de code D3 qui a quelque chose comme ça:
var x = d3.scale.ordinal() .rangeRoundBands([0, width], .1);
D3 version 4.0 d3.scale.ordinal()
est maintenant d3.scaleOrdinal
et rangeRoundBands
semble disparaître.
> d3.scaleOrdinal() { [Function: scale] domain: [Function], range: [Function], unknown: [Function], copy: [Function] }
Quel serait l'équivalent D3 v4 de ce code (de l' exemple de diagramme à barres de Mike Bostock)?
var x = d3.scale.ordinal() .rangeRoundBands([0, width], .1);
Dans D3 4.x rangeRoundBands
été déplacé vers la nouvelle échelle de bande :
d3.scaleBand() .range([range]) .round([round]);
Cela équivaut à:
d3.scaleBand() .rangeRound([range]);
Voici l'API: https://github.com/d3/d3-scale#band-scales
var x = d3.scale.ordinal() .rangeRoundBands([0, width], .1);
Ce qui précède calcule les bandes et établit le rembourrage entre la bande. En v4, l'équivalent est
var x = d3.scaleBand() .rangeRound([0, width]) .padding(0.1);
var svg = d3.select("svg"), margin = {top: 20, right: 20, bottom: 30, left: 60}, width = +svg.attr("width") - margin.left - margin.right, height = +svg.attr("height") - margin.top - margin.bottom; var x = d3.scaleBand().rangeRound([0, width]).padding(0.1), y = d3.scaleLinear().rangeRound([height, 0]); var g = svg.append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); d3.tsv("data.txt", function(d) { dy = +dy; return d; }, function(error, data) { if (error) throw error; x.domain(data.map(function(d) { return dx; })); y.domain([0, d3.max(data, function(d) { return dy; })]);
Une syntaxe pouvant être lancée pour un graphique classique à l'aide de scaleBand et scaleLinear.