Placer les étiquettes au centre de nœuds d3.js

Je commence avec d3.js et suis en train de créer une ligne de nœuds qui contiennent chacun une centrée sur l'étiquette du numéro.

Je suis en mesure de produire le résultat désiré visuellement, mais la façon dont je l'ai fait, il n'est guère optimale car elle implique le codage en dur des coordonnées x-y pour chaque élément de texte. Ci-dessous le code:

var svg_w = 800;
var svg_h = 400;
var svg = d3.select("body")
.append("svg")
.attr("width", svg_w)
.attr("weight", svg_h);
var dataset = [];
for (var i = 0; i < 6; i++) {
var datum = 10 + Math.round(Math.random() * 20);
dataset.push(datum);
}
var nodes = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("class", "node")
.attr("cx", function(d, i) {
return (i * 70) + 50;
})
.attr("cy", svg_h / 2)
.attr("r", 20);
var labels = svg.append("g")
.attr("class", "labels")
.selectAll("text")
.data(dataset)
.enter()
.append("text")
.attr("dx", function(d, i) {
return (i * 70) + 42
})
.attr("dy", svg_h / 2 + 5)
.text(function(d) {
return d;
});

La node classe est de coutume de classe CSS que j'ai défini séparément pour les circle éléments, tandis que les classes nodes et labels ne sont pas explicitement définis et ils sont empruntés à partir de ce réponse.

Comme on le voit, la position de chaque étiquette de texte est codé en dur, de sorte qu'il apparaît au centre de chaque nœud. Évidemment, ce n'est pas la bonne solution.

Ma question est comment dois-je associer correctement chaque étiquette de texte à chaque nœud cercle de manière dynamique, de sorte que si le positionnement d'une modification de l'étiquetage ainsi que celle d'un cercle automatiquement. Conceptuel explication est extrêmement bienvenue avec le code exemple.

  • Texte des ancres semblent pas travailler directement en D3, mais avez-vous essayé quelque chose d'aussi simple que de CSS text-align? Ceci devrait faire l'affaire! w3schools.com/cssref/pr_text_text-align.asp essayez Également de prendre un coup d'oeil aux postes de ce type à partir de la d3 Groupe Google: groups.google.com/forum/#!searchin/d3-js/text-align/d3-js/...
  • Où avez-vous l'idée que le texte des ancres ne fonctionnent pas en d3?
  • il ya quelques mois ils n'ont pas travaillé...merci pour la clarification 🙂 sympa de voir une approche simple pour ce problème
InformationsquelleAutor skyork | 2012-08-08