Um Scotts Antwort hinzuzufügen, ist dy, das mit em (font size units) verwendet wird, sehr nützlich, um Text relativ zur absoluten y-Koordinate vertikal auszurichten. Dies ist in der D3 text element reference gut abgedeckt.
Mit dy = 0.35em können Sie Texte unabhängig von der Schriftgröße vertikal zentrieren. Es hilft auch, wenn Sie den Mittelpunkt Ihres Textes um einen Punkt drehen möchten, der durch Ihre absoluten Koordinaten beschrieben wird.
<style>
text { fill: black; text-anchor: middle; }
line { stroke-width: 1; stroke: lightgray; }
</style>
<script>
dataset = d3.range(50,500,50);
svg = d3.select("body").append("svg");
svg.attr({width:500,height:300});
svg.append("line").attr({x1:0,x2:500,y1:100,y2:100});
svg.append("line").attr({x1:0,x2:500,y1:200,y2:200});
group = svg.selectAll("g")
.data(dataset)
.enter()
.append("g");
// Without the dy=0.35em offset
group.append("text")
.text("My text")
.attr("x",function (d) {return d;})
.attr("y",100)
.attr("transform", function(d, i) {return "rotate("+45*i+","+d+",100)";});
// With the dy=0.35em offset
group.append("text")
.text("My text")
.attr("x",function (d) {return d;})
.attr("y",200)
.attr("dy","0.35em")
.attr("transform", function(d, i) {return "rotate("+45*i+","+d+",200)";});
<script>
Wenn Sie nicht enthalten „dy = 0.35em“ drehen sich die Wörter rund um den unteren Rand des Textes und nach 180 align unten, wo sie vor der Rotation waren. Einschließlich "dy = 0.35em" dreht sie um die Mitte des Textes.
Beachten Sie, dass dy nicht mit CSS festgelegt werden kann.
Falls jemand anderes dazu kommt, konnte ich nicht funktionieren, wenn ich nicht svg = d3.select ("body") gesetzt habe. Append ("svg"); und dann machte der Attr in der nächsten Zeile. svg.attr ({Breite: 500, Höhe: 300}) ;. Danke für das Teilen! –