D3: la Substitution de d3.svg.diagonale() avec d3.svg.ligne()

J'ai mis en œuvre le graphique suivant avec les bords rendu avec d3.svg.diagonale(). Cependant, quand j'ai essayer de substituer la diagonale avec d3.svg.ligne(), il n'apparaît pas à tirer sur la cible et la source de données. Ce qui me manque? Est-il quelque chose que je ne comprends pas à propos de d3.svg.ligne?

D3: la Substitution de d3.svg.diagonale() avec d3.svg.ligne()

Voici le code que j'ai fais référence, suivi par le code complet:

var line = d3.svg.line()
    .x(function(d) { return d.lx; })
    .y(function(d) { return d.ly; });

...

var link= svg.selectAll("path")
    .data(links)
  .enter().append("path")
    .attr("d",d3.svg.diagonal())
    .attr("class", ".link")
    .attr("stroke", "black")
    .attr("stroke-width", "2px")
    .attr("shape-rendering", "auto")
    .attr("fill", "none"); 

L'ensemble du code:

var margin = {top: 20, right: 20, bottom: 20, left: 20},
width =1500, 
height = 1500, 
diameter = Math.min(width, height),
radius = diameter / 2;
var balloon = d3.layout.balloon()
.size([width, height])
.value(function(d) { return d.size; })
.gap(50)                  
var line = d3.svg.line()
.x(function(d) { return d.lx; })
.y(function(d) { return d.ly; });
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + (margin.left + radius) + "," + (margin.top + radius) + ")")
root = "flare.json";
root.y0 = height / 2;
root.x0 = width / 2;
d3.json("flare.json", function(root) {
var nodes = balloon.nodes(root),
links = balloon.links(nodes);
var link= svg.selectAll("path")
.data(links)
.enter().append("path")
.attr("d",d3.svg.diagonal())
.attr("class", ".link")
.attr("stroke", "black")
.attr("stroke-width", "2px")
.attr("shape-rendering", "auto")
.attr("fill", "none");   
var node = svg.selectAll("g.node")
.data(nodes)
.enter()
.append("g")
.attr("class", "node");
node.append("circle")
.attr("r", function(d) { return d.r; })
.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
node.append("text")
.attr("dx", function(d) { return d.x })
.attr("dy", function(d) { return d.y })
.attr("font-size", "5px")
.attr("fill", "white")
.style("text-anchor", function(d) { return d.children ? "middle" : "middle"; })
.text(function(d) { return d.name; })
});

Une comparaison de la façon dont le d attribut de l'svg disparaît lors de l'utilisation de "ligne".
D3: la Substitution de d3.svg.diagonale() avec d3.svg.ligne()
D3: la Substitution de d3.svg.diagonale() avec d3.svg.ligne()

Vous ne semblez pas être en utilisant line n'importe où dans le code. Le d attribut de chemin est encore défini à l'aide de d3.svg.diagonal.
Oui, mais quand je mets "ligne" pour "d3.svg.diagonale()"0, il brise la vis. Ne peut pas comprendre pourquoi.
Comment est-il casser?
Le d de l'attribut de l'svg disparaît. Je vais télécharger une comparaison ci-dessus.
Avez-vous essayé juste d3.svg.line() sans la coutume des accesseurs pour x et y?

OriginalL'auteur Jakub Svec | 2013-04-17