Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在D3条形图中改变特定条形之间的间距_Javascript_D3.js - Fatal编程技术网

Javascript 在D3条形图中改变特定条形之间的间距

Javascript 在D3条形图中改变特定条形之间的间距,javascript,d3.js,Javascript,D3.js,我有一个条形图,我想让我的图表中的第6个和第12个和第13个条形之间的差距更加明显。现在我正在使用.rangeRoundBands,这会产生均匀的填充,并且似乎没有办法覆盖特定矩形的填充(我尝试将填充和边距附加到特定矩形,但没有成功) 我的代码用于生成条带和条带本身: var yScale = d3.scale.ordinal() .domain(d3.range(dataset.length)) .ran

我有一个条形图,我想让我的图表中的第6个和第12个和第13个条形之间的差距更加明显。现在我正在使用
.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(更重要的是,单个条的填充),好吧,没有填充,它隐含在条的高度中。因此,如果您想要更多的填充,请降低栏的高度。