如何使用d3.js在饼图过渡图中显示标签?

用户456898

我正在使用d3.js的饼图过渡图来形象化潜在客户。绘制了图形,但标签未显示在图形上。

这是代码:

var w = 400,
h = 400,
r = Math.min(w, h) / 2,
data = [25,45],            // Data values
color = d3.scale.category20(),
arc = d3.svg.arc().outerRadius(r),
donut = d3.layout.pie();

var vis = d3.select("#pie-chart-div").append("svg")  // Place the chart in 'pie-chart-div'
    .data([data])
    .attr("width", w)
    .attr("height", h);

var arcs = vis.selectAll("g.arc")
    .data(donut)
  .enter().append("g")
    .attr("class", "arc")
    .attr("transform", "translate(" + r + "," + r + ")");

var paths = arcs.append("path")
    .attr("fill", function(d, i) { return color(i); });

paths.transition()
    .ease("bounce")
    .duration(2000)
    .attrTween("d", tweenPie);

paths.transition()
    .ease("elastic")
    .delay(function(d, i) { return 2000 + i * 50; })
    .duration(750)
    .attrTween("d", tweenDonut);

function tweenPie(b) {
  b.innerRadius = 0;
  var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
  return function(t) {
    return arc(i(t));
  };
}

function tweenDonut(b) {
  b.innerRadius = r * .6;
  var i = d3.interpolate({innerRadius: 0}, b);
  return function(t) {
    return arc(i(t));
  };
}   


如何在饼图过渡图中显示标签?

杰拉尔多·富塔多(Gerardo Furtado)

要在“精确位置”(我想是在圆弧的中间)中显示文本,可以使用以下centroid()功能:

var labels = arcs.append("text")
    .attr("transform", function(d) { 
        d.innerRadius = 120;
        return "translate(" + arc.centroid(d) + ")"; 
    })
    .attr("dy", ".35em")
    .text(function(d) { return d.value; });

查看此演示:

var w = 400,
h = 400,
r = Math.min(w, h) / 2,
data = [25,45],            // Data values
color = d3.scale.category20(),
arc = d3.svg.arc().outerRadius(r),
donut = d3.layout.pie();

var vis = d3.select("body").append("svg")  // Place the chart in 'pie-chart-div'
    .data([data])
    .attr("width", w)
    .attr("height", h);

var arcs = vis.selectAll("g.arc")
    .data(donut)
  .enter().append("g")
    .attr("class", "arc")
    .attr("transform", "translate(" + r + "," + r + ")");

var paths = arcs.append("path")
    .attr("fill", function(d, i) { return color(i); });
		
var labels = arcs.append("text")
      .attr("transform", function(d) { d.innerRadius = 120; return "translate(" + arc.centroid(d) + ")"; })
      .attr("dy", ".35em")
      .text(function(d) { return d.value; });

paths.transition()
    .ease("bounce")
    .duration(2000)
    .attrTween("d", tweenPie);

paths.transition()
    .ease("elastic")
    .delay(function(d, i) { return 2000 + i * 50; })
    .duration(750)
    .attrTween("d", tweenDonut);

function tweenPie(b) {
  b.innerRadius = 0;
  var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
  return function(t) {
    return arc(i(t));
  };
}

function tweenDonut(b) {
  b.innerRadius = r * .6;
  var i = d3.interpolate({innerRadius: 0}, b);
  return function(t) {
    return arc(i(t));
  };
}   
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在D3中为饼图添加标签颜色?

来自分类Dev

如何使用D3js将图例添加到饼图中?以及如何集中饼图?

来自分类Dev

D3饼图圆弧在过渡到180°时不可见

来自分类Dev

如何使用D3 js在折线图中使用工具提示

来自分类Dev

如何更新D3饼图

来自分类Dev

如何在D3中更改饼图的位置?

来自分类Dev

d3饼图的不同弧线显示相同的颜色

来自分类Dev

如何使用c3js在条形图/饼图/面积图中填充渐变色

来自分类Dev

如何使用d3.js在饼图附近显示工具提示?

来自分类Dev

如何从d3饼图中删除光标指针

来自分类Dev

如何使用React创建d3力布局图

来自分类Dev

弧外的标签线(饼图)d3.js

来自分类Dev

使用D3创建多层饼图

来自分类Dev

d3.js-圆弧绘制的平滑过渡饼图

来自分类Dev

D3树图-使用直线而不是对角线时如何过渡链接

来自分类Dev

d3如何补间饼图的内半径

来自分类Dev

使用D3生成SVG饼图如何垂直对齐文本

来自分类Dev

如何使用D3插件设置rollup.js?

来自分类Dev

我们如何使用Google图表在3D饼图的pieSliceText上显示标签和值?

来自分类Dev

在d3中更新值时如何在饼图中进行平滑过渡?

来自分类Dev

d3饼图/甜甜圈图中的标签过渡

来自分类Dev

如何在D3中更改饼图的位置?

来自分类Dev

如何从d3饼图中删除光标指针

来自分类Dev

d3饼图排序过渡

来自分类Dev

更新带有标签的饼图(d3)

来自分类Dev

在饼图中使用鼠标悬停并在 d3 js 中显示标签

来自分类Dev

在饼图中使用鼠标悬停并在 d3 v3 js 中显示标签

来自分类Dev

如何在饼图中显示图例从图表到饼图钻取高图

来自分类Dev

如何使用d3在条形图中添加标记

Related 相关文章

热门标签

归档