【发布时间】:2016-09-22 13:48:33
【问题描述】:
我通过围绕圆心旋转来放置标签的视觉效果。然而,这意味着圆圈左侧的所有标签都是颠倒的。发生这种旋转后,是否可以围绕自身旋转左侧的标签?
可视化基于来自d3js.org 的zoomable sunburst
相关代码为:
function computeTextRotation(d) {
var angle=(d.x +d.dx/2)*180/Math.PI - 90;
return angle;
}
var texts = svg.selectAll("text")
.data(partitioned_data)
.enter().append("text")
.filter(filter_min_arc_size_text)
.attr("transform", function(d) {return "rotate(" + computeTextRotation(d) + ")"})
.attr("x", function(d) { return radius / 3 * d.depth; })
.attr("dx", "6") // margin
.attr("dy", ".35em") // vertical-align
.text(function(d,i) {return d.name})
我尝试了下面的代码,因为我知道如果您知道文本的 x 和 y 坐标,这是可能的,但它不会让我传入 d.x 和 d.y 作为坐标。
var texts = svg.selectAll("text")
.data(partitioned_data)
.enter().append("text")
.filter(filter_min_arc_size_text)
.attr("transform", function(d) {
if (computeTextRotation(d)>90&&computeTextRotation(d)<270) {
return "rotate(" + computeTextRotation(d) + ") rotate(d.x,d.y,180)";
} else {
return "rotate(" + computeTextRotation(d) + ")";
}})
.attr("x", function(d) { return radius / 3 * d.depth; })
.attr("dx", "6") // margin
.attr("dy", ".35em") // vertical-align
.text(function(d,i) {return d.name})
【问题讨论】:
标签: javascript d3.js