Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用d3.nest创建饼图_Javascript_D3.js_Nested_Pie Chart - Fatal编程技术网

Javascript 使用d3.nest创建饼图

Javascript 使用d3.nest创建饼图,javascript,d3.js,nested,pie-chart,Javascript,D3.js,Nested,Pie Chart,我有各种各样的数据,我用它们创建了一个油炸圈饼图。我想用一个数据分解图来制作一个饼图,我用d3.nest将我得到的数据细分为3类:nest将其分解为129。基本上,我有基于奖牌数量的奥运会数据,我想将这些数据细分为他们在哪些项目中获得的互动数据 我只是不知道如何使用嵌套数据创建饼图,特别是如果键是可变的。我将包括甜甜圈图表的实现 var pie = d3.pie(); // color based on medal awarded // order: gold, silver, b

我有各种各样的数据,我用它们创建了一个油炸圈饼图。我想用一个数据分解图来制作一个饼图,我用d3.nest将我得到的数据细分为3类:nest将其分解为129。基本上,我有基于奖牌数量的奥运会数据,我想将这些数据细分为他们在哪些项目中获得的互动数据

我只是不知道如何使用嵌套数据创建饼图,特别是如果键是可变的。我将包括甜甜圈图表的实现

  var pie = d3.pie();

  // color based on medal awarded
  // order: gold, silver, bronze
  var color = d3.scaleOrdinal()
    .range(['#e5ce0c', '#e5e4e0', '#a4610a']);

  var arcs = d3.select(svg).selectAll("g.arc")
    .data(pie(data))
    .enter()
    .append("g")
    .attr("class", "arc")
    .attr("transform", "translate(" + (w/2) + "," + ((h-25)/2) + ")");

  arcs.append("path")
  .attr("fill", function(d, i) {
    return color(i);
  })
  .attr("d", arc)
  .attr("stroke", "white")
  .style("stroke-width", "0.5px")
  .on('mouseover', function(d) {
    d3.select(this).attr('opacity', .7);

  })
  .on('mouseleave', function(d) {
    d3.select(this).attr('opacity', 1);
  });

  // title
  d3.select(svg).append('text')
    .attr('x', function(d) {
      return ((w/2) - 85);
    })
    .attr('y', '20')
    .text(function(d) {
      return ('Medal breakdown for ' + country);
    })
    .attr('font-size', '16px');

  arcs.append("text")
    .attr("transform", function(d) {
      return "translate(" + arc.centroid(d) + ")";
    })
    .attr("text-anchor", "middle")
    .text(function(d) {
      return d.value;
    });

你能确认一下这是你的数据格式吗

请找到下面的代码,如果您有任何疑问,请告诉我

var w=400; var h=400; var r=h/2; var color=d3.scale.category20c; 风险值数据=[ {名称:足球,奖牌:1}, {名称:曲棍球,奖牌:2}, {名称:板球,奖牌:3}, {名称:网球,奖牌:4}, {名称:乒乓球,奖牌:5}, ]; var vis=d3。选择“图表”。appendsvg:svg.data[data]。attrwidth,w.attrheight,h.appendsvg:g.attrtransform,translate+r+,+r+; var pie=d3.layout.pie.valuefunctiond{return d.medal;}; //声明一个arc生成器函数 var arc=d3.svg.arc.outerRadiusr; //选择路径,使用圆弧生成器进行绘制 var arcs=vis.selectAllg.slice.datapie.enter.appendsvg:g.attrclass,slice; arcs.appendsvg:path .attrfill,functionad,i{ 返回颜色i; } .attrd,函数d{ //记录电弧发生器的结果,以显示其冷却程度: 返回弧; }; //添加文本 arcs.appendsvg:text.attrtransform,函数d{ d、 内半径=0; d、 外层=r; 返回translate+arc.centroidd+;}.attrtext锚,middle.text函数,i{ 返回数据[i].name;} ;
你能告诉我你使用的数据集的结构吗?它基本上只是一个运动->价值的列表,也就是那种类型的奖牌数量。我添加了一个格式来了解你的确切格式?如果没有,请在你的问题中张贴格式。因为这样很难理解,为什么需要使用d3.nest.Yup,这就是它的基本外观!我正在将它作为参数传递到函数中,但我不知道如何实际使用它。我已编辑了我的答案,如果有任何问题,请告诉我。