Javascript 根据D3力布局中的数据选择不同的形状
我正在尝试一个有两种形状的力布局:圆形和三角形。但是,我得到一个错误-无法读取未定义的属性“symbol”。这是相关的代码片段:Javascript 根据D3力布局中的数据选择不同的形状,javascript,d3.js,Javascript,D3.js,我正在尝试一个有两种形状的力布局:圆形和三角形。但是,我得到一个错误-无法读取未定义的属性“symbol”。这是相关的代码片段: var shape = {"action": "circle", "why-hard": "triangle"}; var node = g.append("g") .attr("class", "nodes") .selectAll("circle") .data(graph.nodes) .enter().append("
var shape = {"action": "circle", "why-hard": "triangle"};
var node = g.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(graph.nodes)
.enter().append("circle")
.attr("d", d3.svg.symbol().type(function(d) { return shape[d.type]; }))
您可能正在使用d3v4。D3v4有许多名称空间更改,这些更改将从v3中断代码,而且您的符号代码似乎来自v3。在本例中:
.attr("d", d3.svg.symbol().type(function(d) { return shape[d.type]; }))
将给出错误:uncaughttypeerror:无法在Chrome中读取未定义的
(如上所述)的属性“symbol”,并且在Firefox中,d3.svg未定义。对于v4,请尝试以下内容:
.attr("d", d3.symbol().type(d3.symbolCross));
要在v4中动态分配类型,方法基本上与您的方法相同:
.attr("d", d3.symbol().type( function(d,i) { return d3.symbols[i];} ) )
看小提琴
有关形状的v4文档,请参阅