Javascript d3v4为什么我的行元素没有出现?

Javascript d3v4为什么我的行元素没有出现?,javascript,d3.js,graph,data-visualization,Javascript,D3.js,Graph,Data Visualization,我正在制作一组简单的方框图,但由于某些原因,线条元素没有显示出来 代码是: var margin = { top: 10, right: 30, bottom: 30, left: 40 }, width = 900 - margin.left - margin.right, height = 400 - margin.top - margin.bottom; var svgBox = d3.sele

我正在制作一组简单的方框图,但由于某些原因,线条元素没有显示出来 代码是:

    var margin = {
        top: 10,
        right: 30,
        bottom: 30,
        left: 40
    },
    width = 900 - margin.left - margin.right,
    height = 400 - margin.top - margin.bottom;
var svgBox = d3.select("#my_dataviz")
    .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 + ")");


var yScale = d3.scaleLinear()
    .range([height, 0]);


var xScale = d3.scaleBand()
    .rangeRound([0, width])
    .paddingInner(0.05)
    .align(0.1);


var center = 200
var width = 100


d3.csv("boxPlotData.csv", function(dataset) {
    var max = d3.max(dataset, function(d) {
        return +d.max;
    });
    yScale.domain([0, max])
    xScale.domain(dataset.map(function(d) {
        return d.borough;
    }));
    svgBox.append("g").call(d3.axisLeft(yScale));
    svgBox.append("g").attr("transform", "translate(0," + height + ")").call(d3.axisBottom(xScale));

    svgBox.selectAll("line").data(dataset).enter()
        .append("line")
        .attr("x1", d => xScale(d.borough) + width / 3.5)
        .attr("x2", d => xScale(d.borough) + width / 3.5)
        .attr("y1", d => yScale(+d.min))
        .attr("y2", d => yScale(+d.max))
        .attr("stroke", "black");


    svgBox.selectAll("rect")
        .data(dataset)
        .enter()
        .append("rect")
        .attr("x", d => xScale(d.borough) + width / 3.5)
        .attr("y", d => yScale(+d.q3))
        .attr("height", d => (yScale(+d.q1) - yScale(+d.q3)))
        .attr("width", width)
        .attr("stroke", "black")
        .style("fill", "#69b3a2");
});
我的数据是这样的


代码按预期输入“rect”元素,但线条组件没有显示在html中的任何位置?

问题是您不能只使用
svgBox。选择All(“线条”)
,因为它将选择轴记号和轴线。相反,我建议使用
attr(“class”,“line”)
向行中添加一个类,并使用
svgBox.selectAll(“.line”)
专门选择要追加的行

因此,行追加代码段应该是:

  svgBox.selectAll(".line")
    .data(dataset)
    .enter()
    .append("line")
    .attr("class", "line")
    .attr("x1", d => xScale(d.borough) + width / 3.5)
    .attr("x2", d => xScale(d.borough) + width / 3.5)
    .attr("y1", d => yScale(+d.min))
    .attr("y2", d => yScale(+d.max))
    .attr("stroke", "black");

下面是工作代码段:

我确实选择了All,但在询问问题时忘记将其放回代码中(正在擦除和修改它以尝试使其工作)。selectAll的结果相同