เพื่อเพิ่มคำตอบของ Scott dy ที่ใช้กับ em (หน่วยขนาดฟอนต์) มีประโยชน์มากสำหรับการจัดแนวข้อความในแนวตั้งโดยสัมพันธ์กับพิกัด y สัมบูรณ์ นี้จะครอบคลุมในMDN ข้อความ DY ตัวอย่างองค์ประกอบ
การใช้ dy = 0.35em สามารถช่วยให้ข้อความอยู่กึ่งกลางแนวตั้งโดยไม่คำนึงถึงขนาดตัวอักษร นอกจากนี้ยังช่วยในกรณีที่คุณต้องการหมุนตรงกลางของข้อความไปรอบ ๆ จุดที่อธิบายโดยพิกัดสัมบูรณ์ของคุณ
<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>
ดูใน Codepen
หากคุณไม่รวม "dy = 0.35em" คำจะหมุนรอบด้านล่างของข้อความและหลังจาก 180 จัดแนวด้านล่างซึ่งอยู่ก่อนการหมุน การรวม "dy = 0.35em" จะหมุนรอบ ๆ กึ่งกลางของข้อความ
โปรดทราบว่าไม่สามารถตั้งค่า dy โดยใช้ CSS
d3.js
นั้นใช้สำหรับการรวมหน่วยต่างๆ เช่นเดียวกับx="3" dx="0.5em"
ที่มีขนาด 3 พิกเซล + ครึ่งบรรทัดข้อความ