Различные символы узлов для силового графа d3.js

Как отображать узлы в виде разных символов в принудительно управляемой библиотеке d3.js? Я хотел реализовать что-то похожее на то, что я написал ниже:

  var node = svg.selectAll(".node") 
      .data(graph.nodes) 
    .enter().append(function(d){return d.shape;}) 
      .attr("class", "node") 
      .attr("r", 5) 
      .style("fill", function(d) { return color(d.group); }) 
      .call(force.drag); 

Каждый узел будет иметь закодированную форму («прямоугольник», «круг» и т. д.). Однако я получаю сообщение об ошибке:

Uncaught TypeError: Object function (d){return "circle";} has no method 'indexOf' 

Другой вопрос, связанный с этим, заключается в следующем: как переключаться между применением различных атрибутов для каждой формы? Круги нуждаются в уточнении атрибута «r», но прямоугольники требуют «высоты» и «ширины». Спасибо!


person user1114864    schedule 06.04.2013    source источник


Ответы (1)


Используйте d3.svg.symbol, как в принудительно направленные символы.

person mbostock    schedule 06.04.2013