【问题标题】:Adding text to the center of a D3 Donut Graph将文本添加到 D3 圆环图的中心
【发布时间】:2015-03-21 17:47:26
【问题描述】:

Fiddle

我正在尝试使用 D3 将标签插入到圆环图的中心。我能够使用我找到的现有代码并对其进行操作,因此中间的图形网格的所有切片看起来就像那里有一个标签,但我认为弄清楚如何使它成为中心更永久的家。我对 JS 和 D3 很陌生。

非常感谢任何帮助。

谢谢

这是当前伪造位于中心的标签的代码。

svg.selectAll("text").data(pie(data)).enter()
.append("text")
.attr("class","label1")
.attr("transform", function(d) {
   var dist=radius-120;
   var winkel=(d.startAngle+d.endAngle)/2;
   var x=dist*Math.sin(winkel)-4;
   var y=-dist*Math.cos(winkel)-4;

   return "translate(" + x + "," + y + ")";
})

【问题讨论】:

  • 我会为图表使用不同的库,d3js 会让你写得更多。检查此stackoverflow.com/a/17293220/1197775。请注意,在使用图表时,对象已经具有表示您感兴趣的事物的属性:center

标签: javascript html css d3.js


【解决方案1】:

您可以大大简化您的代码。由于您已经将饼图居中:

var svg = d3.select("#svgContent").append("svg")
    .attr("width",width)
    .attr("height",height)
    .append("g")
    .attr("transform","translate("+width/2+","+height/2+")");

您可以按如下方式添加文本:

svg.append("text")
   .attr("text-anchor", "middle")
   .text("$" + totalValue);

请注意,由于您只是添加了一个<text>,因此您不需要将任何数据绑定到它,并且可以直接将值传递给.text(...)而不是函数。

【讨论】:

  • 噢噢,看看那个!非常感谢。问题解决了。如果代码中还有其他问题,请告诉我!
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多