Ich beginne mit d3.js und versuche, eine Reihe von Knoten zu erstellen, von denen jeder eine zentrierte Nummernbezeichnung enthält.Platzieren von Beschriftungen in der Mitte von Knoten in d3.js
Ich kann das gewünschte Ergebnis visuell erzeugen, aber die Art, wie ich es gemacht habe, ist kaum optimal, da es die x-y-Koordinaten für jedes Textelement fest codiert. Unten ist der 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;
});
Die node
Klasse benutzerdefinierte CSS-Klasse-I getrennt für die circle
Elemente definiert haben, während Klassen nodes
und labels
nicht explizit definiert und sie von diesem answer entlehnt sind.
Wie zu sehen ist, ist die Positionierung jedes Textlabels fest codiert, so dass es in der Mitte jedes Knotens erscheint. Offensichtlich ist dies nicht die richtige Lösung.
Meine Frage ist, wie sollte ich jede Textbeschriftung korrekt jedem Knoten-Kreis dynamisch zuordnen, so dass sich die Positionierung einer Beschriftung automatisch mit der eines Kreises ändert. Konzeptuelle Erklärungen sind mit Codebeispielen sehr willkommen.
Textanker erscheinen nicht direkt noch in D3 zu arbeiten, aber haben Sie etwas so einfaches wie CSS text-align versucht? Dies sollte den Trick tun! http://www.w3schools.com/cssref/pr_text_text-align.asp Versuchen Sie auch, solche Posts aus der d3 Google-Gruppe zu sehen: https://groups.google.com/forum/#!searchin/d3 -js/text-align/d3-js/M6a-97ajkWs/rHJV4_WrhX0J% 5B1-25% 5D – paxRoman
Woher kommen Sie, dass Textanker in d3 nicht funktionieren? –
vor ein paar Monaten haben sie nicht funktioniert ... danke für die Klärung :) schön, eine einfache Annäherung an dieses Problem zu sehen – paxRoman