D3.js 在d3js条形图中,我想要固定的条形宽度
我想固定酒吧的大小和宽度 从上面的示例中,我更改了D3.js 在d3js条形图中,我想要固定的条形宽度,d3.js,D3.js,我想固定酒吧的大小和宽度 从上面的示例中,我更改了 svg.selectAll("bar") .data(data) .enter().append("rect") .style("fill", "steelblue") .attr("x", function(d) { return x(d.date); }) .attr("width", x.rangeBand()) .attr("y", function(d) { ret
svg.selectAll("bar")
.data(data)
.enter().append("rect")
.style("fill", "steelblue")
.attr("x", function(d) { return x(d.date); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); });
到
但是标签没有移动到正确的位置,而且条重叠了您必须更改
x
比例的范围()
,以适应您的条宽值:
var x = d3.scale.ordinal().rangeRoundBands([0, width], .05);
至(如果您想要50px作为条宽)
range()
方法用于定义电子秤的显示空间。我正在寻找类似的解决方案。@JulCh给出的答案对我来说不是现成的,而是引导我走向正确的方向
尝试:
其中,内部d3.range
创建一个数组,其中包含由data.length
或一些常量
number(您希望显示的条数)确定的元素数
示例:如果data.length
或某个常量为8
,则[0,1,2,3,4,5,6,7]
从d3.range(8)
然后,map
函数将50的固定宽度乘以返回[0,50100150200250300350]的数组中的每个元素。
D3将使用这些精确值来放置条形图
var x = d3.scale.ordinal().rangeRoundBands([0, width], .05);
var x = d3.scale.ordinal().range([0, data.length * 50]);
var x = d3.scale.ordinal()
.range(d3.range(data.length).map(function (d) { return d * 50; }));