Mike Bostock, l'autore di D3, molto gentilmente ci ha aiutato con la seguente soluzione. Definire uno stile per g.link; Ho appena copiato lo stile per g.node. Quindi ho sostituito il codice "var link = ...." con il seguente. Le funzioni xey posizionano l'etichetta al centro del tracciato.
var linkg = vis.selectAll("g.link")
.data(cluster.links(nodes))
.enter().append("g")
.attr("class", "link");
linkg.append("path")
.attr("class", "link")
.attr("d", diagonal);
linkg.append("text")
.attr("x", function(d) { return (d.source.y + d.target.y)/2; })
.attr("y", function(d) { return (d.source.x + d.target.x)/2; })
.attr("text-anchor", "middle")
.text(function(d) {
return "edgeLabel";
});
La funzione di testo dovrebbe idealmente fornire un'etichetta specifica per ciascun bordo. Ho popolato un oggetto con i nomi dei miei bordi durante la preparazione dei miei dati, così la mia funzione di testo simile a questa:
.text(function(d) {
var key = d.source.name + ":" + d.target.name;
return edgeNames[key];
});
fonte
2012-05-31 21:33:08
Alcune persone sono stati tentati di scambiare le x ed y è nella seconda e terza linea del ' linkg.append ("text") 'piece. Per favore non farlo, sono corretti così come sono. C'è un aggiornamento perché l'esempio [Dendrogram] (http://bl.ocks.org/mbostock/4063570) sul sito Web D3 è cambiato. La prima riga dovrebbe ora leggere: 'var linkg = svg.selectAll (". Link ")' –