5

我想在 d3.js 库中提供的堆叠条形图中的堆叠条的每个条中都有一些文本。

谢谢你的帮助。

我已经自定义了此处的示例链接,但我没有更改 javascript 代码中的任何其他内容

这是结果结果

4

2 回答 2

5

这是重要的一段代码:

  state.selectAll("rect")
      .data(function(d) { return d.ages; })
    .enter().append("rect")
      .attr("width", x.rangeBand())
      .attr("y", function(d) { return y(d.y1); })
      .attr("height", function(d) { return y(d.y0) - y(d.y1); })
      .style("fill", function(d) { return color(d.name); });

这将每个点绑定data到彩色矩形。要添加文本,请按如下方式更改:

  var ages_enter = state.selectAll("rect")
      .data(function(d) { return d.ages; })
    .enter();
  ages_enter.append("rect")
      .attr("width", x.rangeBand())
      .attr("y", function(d) { return y(d.y1); })
      .attr("height", function(d) { return y(d.y0) - y(d.y1); })
      .style("fill", function(d) { return color(d.name); });
  ages_enter.append("text")
      .text(function(d) { return d3.format(".2s")(d.y1); })
      .attr("y", function(d) { return y(d.y1)+16; })
      .style("stroke", '#ffffff');

这存储了一个指向为每个数据点调用的“输入”方法的指针,然后为每个数据点添加一个附加元素到 svg。

于 2013-07-10T15:28:47.387 回答
0

我用这段代码绘制出来。文本将附加到堆叠图表的中心。我们需要找出 x 坐标值来定位文本。对于那个 barWidth/2 被使用。演示排序堆积条形图

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

  module.selectAll("rect")
  .data(function(d) { return d.ages; })
  .enter().append("rect")
  .attr("width", x.rangeBand())
  .attr("y", 200)
  .attr("height", 100) 
  .style("fill", function(d) { return color(d.name); })
  .transition()
   .delay(function(d, i) { return i * 200; })
   .duration(4000)
   .attr("y", function(d) { return y(d.y1); })
   .attr('height', function(d) { return y(d.y0) - y(d.y1); });

 module.append("text")
  .attr("y", 400)
  .attr("x",x.rangeBand()/2 )
  .style("text-anchor", "middle")
  .style("font-size", "20px")
  .style("color", "white")
  .text(function(d,i) { return i+1; }); 
于 2015-03-12T06:55:14.763 回答