如何在D3.js中的弧之间绘制简单的线条(流)?

时间:2017-03-06 12:31:16

标签: javascript d3.js

这是我的圈子。我想画圆弧之间的流线。我怎么能在D3.js中做到这一点。

仅供参考我知道https://bl.ocks.org/mbostock/4062006。我想要的不是那些宽的和弦我想要简单的线条。

enter image description here

var arcGenerator = d3.arc()
  .innerRadius(80)
  .outerRadius(100)
  .padAngle(.02)
  .padRadius(100)
  .cornerRadius(4);

var arcData = [
  {startAngle: 0, endAngle: 1.3},
  {startAngle: 1.3, endAngle: 2.6},
  {startAngle: 2.6, endAngle: 3},
  {startAngle: 3, endAngle: 4},
  {startAngle: 4, endAngle: 2* Math.PI}
];

d3.select('g')
  .selectAll('path')
  .data(arcData)
  .enter()
  .append('path')
  .attr('d', arcGenerator);

这是一个简单的codepen:     http://codepen.io/ioan-ungurean/pen/aJNWMM

2 个答案:

答案 0 :(得分:1)

我认为您应该能够使用d3.ribbon()生成器 - https://github.com/d3/d3-chord/blob/master/README.md#ribbon

为源和目标参数传递startAngleendAngle的相同值,它会为您提供一个路径字符串,您可以将其设置为路径元素数据。

答案 1 :(得分:0)

// draw the flow line
let flowLine = d3.line()
  .x((d) => { return d.x; })
  .y((d) => { return d.y; })
  .curve(d3.curveBundle.beta(0.5));

// append each flow to the svg
layer0.selectAll('.flow')
  .data(arrayOfCoordinates) // [[{1, 1},{{2, 2}}][{3, 3},{{4, 5}}]] - centroid coordinates for arcs in the circle
  .enter().append('path')
  .style('fill', 'none')
  .style("stroke", '#000')
  .style('stroke-width', '1px')
  .attr('d', flowLine);

更多详情: