Um Scotts Antwort zu ergänzen, ist dy, das mit em (Schriftgrößeneinheiten) verwendet wird, sehr nützlich, um Text relativ zur absoluten y-Koordinate vertikal auszurichten. Dies wird im Beispiel für ein MDN-Dy-Textelement behandelt .
Mit dy = 0.35em können Sie Text unabhängig von der Schriftgröße vertikal zentrieren. Es ist auch hilfreich, wenn Sie die Mitte 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).attr('height', 500);
svg.append("line").attr('x1', 0).attr('x2', 500).attr('y1', 100).attr('y2', 100);
svg.append("line").attr('x1', 0).attr('x2', 500).attr('y1', 200).attr('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>
Zeigen Sie es in Codepen an
Wenn Sie "dy = 0.35em" nicht einschließen, drehen sich die Wörter am unteren Rand des Textes und richten sich nach 180 unterhalb der Stelle aus, an der sie sich vor der Drehung befanden. Wenn Sie "dy = 0.35em" einschließen, werden sie um die Textmitte gedreht.
Beachten Sie, dass dy nicht mit CSS eingestellt werden kann.
d3.js
es zum Kombinieren verschiedener Einheiten verwendet wird. Wiex="3" dx="0.5em"
das entspricht 3 Pixel + eine halbe Textzeile.