1

我有一个带有翻译位置的 json 数据,我返回该数据以及我创建的函数的质心。当我运行此代码时,文本沿底部直线运行:

var prac = svg.append("g.prac")
            .data(inner)
            .enter()
            .append("g")
            .attr("transform", function(d,i){return "translate ("+ arc[i].centroid() +")" + d.trans;});   

        prac.append("text")
            .style("font", "bold 12px Arial")
           .text(function(d) {return d.text;})
        ;

我也尝试附加 (svg:text) 而不是对其进行分组,但它只是没有出现。

谁能帮我解决我的问题?...我附上了一个例子,让我的问题更清楚:http: //jsfiddle.net/xwZjN/48/

4

1 回答 1

0

一个问题是您要附加<g.prac>元素而不是<g class='prac'>元素。要解决此问题,请切换如下所示的代码:

svg.append("g.prac")

有了这个:

svg.append("g").attr("class", "prac")

其次,更关键的是,您需要选择要将数据绑定到的元素——即使它们尚未创建(Scott Murray 对此有很好的解释)。所以你的prac应该是这样的:

svg.append("g")
    .attr("class", "prac")
  .selectAll("g")
    .data(inner)
    .enter()
    .append("g")
    .attr(...)

这是一个 jsfiddle,我在其中对两者进行了转换g.prac: http g.presence: //jsfiddle.net/c6w7j/4/

我认为这会让你成为其中的一部分。我不确定该文本是否确实落在了您想要的位置,但这至少应该可以修复您的结构。

于 2012-11-21T21:55:56.247 回答