当所有域输入值为 0 时,D3 范围返回 graphHeight 的一半而不是 0

当域值不同时,代码可以正常工作。

https://img1.mukewang.com/650bb02a0001922704760492.jpg

但当所有域值均为 0 时,条形高度变为 140,即 graphHeight 的一半,而不是 0。

https://img.mukewang.com/650bb0340001415704780475.jpg

这是我的代码示例:


const x = d3.scaleBand()

            .rangeRound([0, graphWidth])

            .padding(0.4);


const y = d3.scaleLinear()

            .rangeRound([graphHeight, 0]);


const draw = (data) => {


x.domain(data.map(function(d) {return d.type;}));

y.domain([0, d3.max(data, function(d) {return d.number;})]);


rects.enter()

     .append('rect')

     .on('mouseover', onMouseOver)

     .on('mouseout', onMouseOut)

     .merge(rects)

     .attr('fill', '#30aaed')

     .attr('x', d => x(d.type))

     .attr('y', d => y(d.number))

     .attr('width', x.bandwidth())

     .attr('height', d => graphHeight - y(d.number))

}


ITMISS
浏览 81回答 1
1回答

江户川乱折腾

此问题出现在 d3 v5 中。所以,我使用 d3 v4 解决了这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript