我發現堆棧溢出一個類似的問題。使用該代碼我得到了一些文本顯示,但它不在正確的位置。它離開圖表很遠,但它是彎曲的,文本的內容是正確的。文字沿着一個方舟在一個圓圈包文本放置錯誤
這是我的代碼和小提琴。任何幫助將是偉大的!
function polarToCartesian(centerX, centerY, radius, angleInDegrees)
{ var angleInRadians = (angleInDegrees - 90) * Math.PI/180.0;
return { x: centerX + (radius * Math.cos(angleInRadians)),
y: centerY + (radius * Math.sin(angleInRadians))
};
}
function describeArc(x, y, radius, startAngle, endAngle) {
var start = polarToCartesian(x, y, radius, endAngle);
var end = polarToCartesian(x, y, radius, startAngle);
var arcSweep = endAngle - startAngle <= 180 ? "0" : "1";
var d = [
"M", start.x, start.y,
"A", radius, radius, 0, 1, 1, end.x, end.y
].join(" ");
return d;
}
var arcs = node.append("path")
.attr("fill", "none")
.attr("id", function (d, i) { return "s" + i; })
.attr("d", function (d, i) {
return describeArc(d.x, d.y, d.r, 160, -160)
});
var arcPaths = node.append("g")
.style("fill", "black");
var labels = arcPaths.append("text")
.style("opacity", function (d) {
if (d.depth == 0) {
return 0.0;
} else {
return 0.8;
}})
.attr("font-size", 10)
.style("text-anchor", "middle")
.append("textPath")
.attr("xlink:href", function (d, i) { return "#s" + i; })
.attr("startOffset", function (d, i) { return "50%"; })
.text(function (d) { return d.data.key == "root" ? "" :
d.data.key; })
你能告訴你如何定義「defs」 - 你引用的路徑嗎? – genestd