D3 ..尝试向条形图添加标签,将所有值添加到每个标签

时间:2013-07-30 19:33:06

标签: d3.js labels

我对D3比较新,并尝试在条形图中添加标签。我一直遇到将标签应用于每个标签的标签问题。预先加载此代码是正常的数据加载等。

        // Controls Bar Layout and Offset (x(d.weekOf)+20)

    var property = svg.selectAll(".property")
        .data(data)
        .enter().append("g")
        .attr("class", "g")
        .attr("transform", function(d) { return "translate(" + (x(d.weekOf)+20) + ",0)"; });

    //  Theese are the bars, width is the width of the bars

    property.selectAll("rect")
        .data(function(d) { return d.emissions; })
        .enter().append("rect")
        .attr("width", "80")
        .attr("y", function(d) { return y(d.y1); })
        .attr("height", function(d) { return y(d.y0) - y(d.y1); })
        .attr("opacity", "0.7")
        .style("fill", function(d) { return color(d.name); });

    //  Add Capacity Labels

    property.selectAll("text")
        .data(data)
        .enter()
        .append("text")
        .text(function(d, i) {return d.Internal; })
        .attr("x", 41)
        .attr("y", 210)
        .attr("text-anchor", "middle");

显然我错过了一些简单的事情......?

1 个答案:

答案 0 :(得分:1)

您的标签是属性选择的子选择,因此您应该使用数据连接到相应的父数据,而不是使用data()将每个属性标签连接到整个数据集,如下所示: / p>

 property.selectAll("text")
    .data(function(d) {return [d];})
    .enter()
    .append("text")
    .text(function(d, i) {return d.Internal; })
    .attr("x", 41)
    .attr("y", 210)
    .attr("text-anchor", "middle");