d3 Knotenbeschriftung
Ich habe mit dem Beispielcode aus das d3-Projekt um zu erfahren, wie Darstellung d3 Grafiken und ich kann nicht scheinen, um text zu zeigen, bis in die Mitte der Kreise (ähnlich dieses Beispiel und dieses Beispiel). Ich habe andere Beispiele, und haben versucht, indem
node.append("title").text("Node Name To Display")
und
node.append("text")
.attr("text-anchor", "middle")
.attr("dy", ".3em").text("Node Name To Display")
direkt nach Knoten definiert ist, aber die einzigen Ergebnisse, die ich sehen, ist "Node-Name Anzeigen" wird angezeigt, wenn ich den Mauszeiger über die einzelnen Knoten. Es ist nicht angezeigt als text innerhalb des Kreises. Muss ich schreiben, dass meine eigenen svg-text-Objekt, und bestimmen Sie die Koordinaten, die benötigt werden, platziert auf der Basis der Koordinaten der radius des Kreises? Von den beiden anderen Beispielen, es würde scheinen, dass d3 schon nimmt sorgen der irgendwie. Ich weiß nur nicht das richtige Attribut zu nennen/stellen.
InformationsquelleAutor der Frage Josh Bradley | 2012-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Beispiele zeigt, wie Beschriftungen hinzufügen, um graph und Baum-Darstellungen, aber ich würde wahrscheinlich beginnen mit dieser als am einfachsten:
Du noch nicht gepostet einen link zu deinem code, aber ich vermute, dass
node
bezieht sich auf eine Auswahl von SVG-Kreis-Elemente. Sie können nicht hinzufügen von text-Elementen auf Kreis-Elemente, weil Kreis-Elemente sind nicht Container; hinzufügen eines Textelements zu einem Kreis werden ignoriert.In der Regel verwenden Sie ein element G der Gruppe ein Kreis-element (oder ein Bild-element, wie oben) und ein text-element für jeden Knoten. Die entstehende Struktur sieht wie folgt aus:
Verwenden Daten-beitreten zu schaffen, die G-Elemente für die einzelnen Knoten, und verwenden Sie dann Auswahl.Anhängen hinzufügen ein Kreis und ein text-element für jeden. So etwas wie dieses:
Einen Nachteil dieses Ansatzes ist, dass Sie wollen, dass die Beschriftungen gezeichnet werden, der auf der Spitze der Kreise. Da SVG noch nicht unterstützt z-index, der die Elemente gezogen werden, die in Dokument-Ordnung; also, den obigen Ansatz bewirkt, dass ein label gezeichnet werden über den Kreis seineraber es kann gezogen werden unter anderen Kreisen. Sie können dieses Problem beheben, durch die Verwendung von zwei Daten-Verknüpfungen und die Erstellung von separaten Gruppen für die Kreise und Beschriftungen, etwa so:
Und die entsprechenden JavaScript:
Diese Technik wird verwendet, in der Mobile-Patent-Anzüge Beispiel (mit einem zusätzlichen text-element verwendet, um eine white shadow).
InformationsquelleAutor der Antwort mbostock
Wenn Sie wachsen wollen, die Knoten zu passen, große Etiketten, die Sie verwenden können, die getBBox-Eigenschaft des SVG-text - (Knoten) nachdem Sie gezeichnet haben. Hier ist, wie ich es gemacht habe, für eine Liste von Knoten, die mit festen Koordinaten und zwei mögliche Formen:
Beachten Sie, dass die Form Hinzugefügt wird, wird der text Hinzugefügt wird, dann der Form positioniert ist, um den text zu zeigen, auf der Oberseite.
InformationsquelleAutor der Antwort Aleks Kissinger
Fand ich diese Anleitung sehr nützlich, zu versuchen, etwas zu erreichen ähnlich :
https://www.dashingd3js.com/svg-text-element
Basierend auf obigen link dieser code generiert circle labels :
InformationsquelleAutor der Antwort blue-sky