Javascript 使用3d矩阵确定钢筋宽度

Javascript 使用3d矩阵确定钢筋宽度,javascript,d3.js,Javascript,D3.js,我的数据如下: var data = [[-5,7,10],[10,15,25],[-18,-14,-6]]; var margin = {top: 0, right: 30, bottom: 80, left: 30}, width = 180 - margin.left - margin.right, height = 295 - margin.top - margin.bottom; var x0 = Math.max(-d3.min(data[0]),

我的数据如下:

var data = [[-5,7,10],[10,15,25],[-18,-14,-6]];

var margin = {top: 0, right: 30, bottom: 80, left: 30},
        width = 180 - margin.left - margin.right,
        height = 295 - margin.top - margin.bottom;

var x0 = Math.max(-d3.min(data[0]), d3.max(data[2]));
var x = d3.scale.linear()
        .domain([-x0, x0])
        .range([0, width]);

var y = d3.scale.ordinal()
.domain(d3.range(data.length))
.rangeRoundBands([0, height], .2);

var svg = d3.select("body").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");

svg.selectAll(".bar")
        .data(data)
      .enter().append("rect")     
        .style("fill", "steelblue")
        .attr("x", function(d, i) { return x(Math.min(0, d[0])); })
        .attr("y", function(d, i) { return y(i); })
        .attr("width", function(d, i) { return Math.abs(x(d[2]) - x(d[0])); })
        .attr("height", y.rangeBand())
        .append("rect");

//y axis
svg.append("g")
.attr("class", "y axis")
.append("line")
.attr("x1", x(0))
.attr("x2", x(0))
.attr("y1", 0)
.attr("y2", height+10);
我想做的是创建一个条形图,其中
data[0]
是起点,
data[1]
有一条垂直线将条形图一分为二,
data[2]
是条形图的最大值。到目前为止,我认为我正确地介绍了前两个用例,但第三个用例失败了。有什么想法吗


以后,请确保将您的代码包含在您的问题中,并链接到其他地方-这有助于阅读。编辑后,JSFIDLE中还有一个指向cod的链接