条形图与意义明星

时间:2014-12-28 19:09:31

标签: javascript d3.js bar-chart

我是d3 js的新手。

我想创建一个简单的条形图,带有带星号的显着条,如下所示。

stars

我该怎么做呢?显然,我可以根据文档中的示例制作正常的条形图,但我特别是在条形图/星号上不足。

由于

1 个答案:

答案 0 :(得分:0)

对于这个自定义的东西,我只想自己绘制paths。例如,我把它放在一起大约15分钟。请注意,我捏造了误差条计算,并假设第一个柱是最高的。

  svg.selectAll(".errorBar")
    .data(data)
    .enter()
    .append("path")
    .attr("d", function(d, i) {
      var rV = "";
      if (i === 0) {
        rV += "M" + (x(d.letter) + x.rangeBand() * 0.5) + " " + y(d.value);
        rV += "L" + (x(d.letter) + x.rangeBand() * 0.5) + " " + (y(firstValue.value) - ((data.length - 1) * 25));
        return rV;
      }
      var errorY = (y(d.value) - y(d.value) / 6);
      rV += "M" + (x(d.letter) + x.rangeBand() * 0.5) + " " + y(d.value);
      rV += "L" + (x(d.letter) + x.rangeBand() * 0.5) + " " + errorY;
      rV += "M" + (x(d.letter) + x.rangeBand() * 0.25) + " " + errorY;
      rV += "L" + (x(d.letter) + x.rangeBand() * 0.75) + " " + errorY;
      rV += "M" + (x(d.letter) + x.rangeBand() * 0.5) + " " + (errorY - 10);
      rV += "L" + (x(d.letter) + x.rangeBand() * 0.5) + " " + (y(firstValue.value) - (i * 25));
      rV += "M" + (x(firstValue.letter) + x.rangeBand() * 0.5) + " " + (y(firstValue.value) - (i * 25));
      rV += "L" + (x(d.letter) + x.rangeBand() * 0.5) + " " + (y(firstValue.value) - (i * 25));
      return rV;

    })
    .attr("stroke", "black")
    .attr("stroke-width", 2)


  svg.selectAll(".starText")
    .data(data.filter(function(d,i){ return i > 0; }))
    .enter()
    .append('text')
    .attr('dx',function(d,i){
      return ((x(d.letter) + x.rangeBand()) / 2);
    })
    .attr('y', function(d,i){
      return y(firstValue.value) - ((i+1) * 25);
    })
    .style('text-anchor', 'start')
    .text('****')

示例here

看起来像:

enter image description here