Javascript 在D3条形图中改变特定条形之间的间距
我有一个条形图,我想让我的图表中的第6个和第12个和第13个条形之间的差距更加明显。现在我正在使用Javascript 在D3条形图中改变特定条形之间的间距,javascript,d3.js,Javascript,D3.js,我有一个条形图,我想让我的图表中的第6个和第12个和第13个条形之间的差距更加明显。现在我正在使用.rangeRoundBands,这会产生均匀的填充,并且似乎没有办法覆盖特定矩形的填充(我尝试将填充和边距附加到特定矩形,但没有成功) 我的代码用于生成条带和条带本身: var yScale = d3.scale.ordinal() .domain(d3.range(dataset.length)) .ran
.rangeRoundBands
,这会产生均匀的填充,并且似乎没有办法覆盖特定矩形的填充(我尝试将填充和边距附加到特定矩形,但没有成功)
我的代码用于生成条带和条带本身:
var yScale = d3.scale.ordinal()
.domain(d3.range(dataset.length))
.rangeRoundBands([padding, h- padding], 0.05);
svg.selectAll("rect.bars")
.data(dataset)
.enter()
.append("rect")
.attr("class", "bars")
.attr("x", 0 + padding)
.attr("y", function(d, i){
return yScale(i);
})
.attr("width", function(d) {
return xScale(d.values[0]);
})
.attr("height", yScale.rangeBand())
您可以提供一个基于数据和索引计算高度的函数。也就是说,你可以用
.attr("height", function(d,i) {
if(i == 5) {
return 5;
}
return yScale.rangeBand();
})
使第六条的高度为5像素。当然,您可以根据
yScale.rangeBand()
来确定此值,即减去某个数字以使间隙变宽。嘿,拉尔斯,我尝试了类似的方法,虽然这会使条本身“更高”,但它不会改变条的填充(结果是该条溢出到它旁边的条中)-不知何故,你需要找到一种方法来重新计算yScale(更重要的是,单个条的填充),好吧,没有填充,它隐含在条的高度中。因此,如果您想要更多的填充,请降低栏的高度。