如何绘制三角形符号?

El *_*ude 4 javascript d3.js

我正在尝试实现三角形示例但它失败了d3 v4对我来说

triangles = [];
triangles.push({x : 250});
triangles.push({x : 350});

var group = svgContainer.append('g').attr('transform','translate('+ xOffset +','+ 30 +')');
var arc = d3.symbol().type('triangle');

var line = group.selectAll('path')
            .data(triangles)
            .enter()
            .append('path')
            .attr('d',arc)
            .attr('fill','red')
            .attr('stroke','#000')
            .attr('stroke-width',1)
            .attr('transform',function(d){ return "translate("+(d.x)+",0)"; }); 
Run Code Online (Sandbox Code Playgroud)

错误:

未捕获的TypeError:type.apply(...).draw不是函数

Ger*_*ado 9

代替...

type("triangle")
Run Code Online (Sandbox Code Playgroud)

... 它一定要是:

type(d3.symbolTriangle)
Run Code Online (Sandbox Code Playgroud)

以下是D3 v4.x中的符号列表.

这是演示:

var svg = d3.select("svg");

triangles = [];
triangles.push({
  x: 150
});
triangles.push({
  x: 50
});

var arc = d3.symbol().type(d3.symbolTriangle);

var line = svg.selectAll('path')
  .data(triangles)
  .enter()
  .append('path')
  .attr('d', arc)
  .attr('fill', 'red')
  .attr('stroke', '#000')
  .attr('stroke-width', 1)
  .attr('transform', function(d) {
    return "translate(" + d.x + ",30)";
  });
Run Code Online (Sandbox Code Playgroud)
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg></svg>
Run Code Online (Sandbox Code Playgroud)

旋转三角形的相同代码(正如您在评论中提到的那样):

var svg = d3.select("svg");

triangles = [];
triangles.push({
  x: 150
});
triangles.push({
  x: 50
});

var arc = d3.symbol().type(d3.symbolTriangle);

var line = svg.selectAll('path')
  .data(triangles)
  .enter()
  .append('path')
  .attr('d', arc)
  .attr('fill', 'red')
  .attr('stroke', '#000')
  .attr('stroke-width', 1)
  .attr('transform', function(d) {
    return "translate(" + d.x + ",30) rotate(180)";
  });
Run Code Online (Sandbox Code Playgroud)
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg></svg>
Run Code Online (Sandbox Code Playgroud)