// Append circle.
foo.append("circle")
.attr("cx", function(d, i) { return coordinate(d, i, "x"); })
.attr("cy", function(d, i) { return coordinate(d, i, "y"); })
.attr("r", 50);
// Append text.
foo.append("text")
.attr("x", function(d, i) { return coordinate(d, i, "x"); })
.attr("y", function(d, i) { return coordinate(d, i, "y"); })
.text("bar")
.attr("transform", function(d, i) { return "rotate(" + 45 + ", " + coordinate(d, i, "x") + ", " + coordinate(d, i, "y") + ")"; });
// Calculate coordinate function.
function coordinate(d, i, type) {
...
// return an x or y coordinate
}
我有一个计算坐标的函数。为了定位一些元素,我多次调用它。我不能轻易地在<g>
中包含这些元素并进行翻译。有没有办法让我的坐标一次,将它们放在一个变量中,然后每次我需要它来定位一个元素时访问该变量。坐标在我的数据集的每次迭代中发生变化。感谢。
答案 0 :(得分:1)
我们的想法是修改数据,使其包含x和y坐标。
// after binding modify data
foo.data(function(d,i) { d.x = coordinate(d, i, "x");
d.y = coordinate(d, i, "y");
return d;
} );
// Append circle.
foo.append("circle")
.attr("cx", function(d, i) { return d.x; })
.attr("cy", function(d, i) { return d.y; })
.attr("r", 50);
// Append text.
foo.append("text")
.attr("x", function(d, i) { return d.x; })
.attr("y", function(d, i) { return d.y; })
.text("bar")
.attr("transform", function(d, i) { return "rotate(" + 45 + ", " + d.x + ", " + d.y + ")"; });
// Calculate coordinate function.
function coordinate(d, i, type) {
...
// return an x or y coordinate
}