Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未转换到正确位置的文本_Javascript_D3.js - Fatal编程技术网

Javascript 未转换到正确位置的文本

Javascript 未转换到正确位置的文本,javascript,d3.js,Javascript,D3.js,我有一个json数据,其中包含translate位置,我返回该数据以及我创建的函数的形心。当我运行此代码时,文本沿底部以直线运行: var prac = svg.append("g.prac") .data(inner) .enter() .append("g") .attr("transform", function(d,i){return "translate ("+ arc[i].centroi

我有一个json数据,其中包含translate位置,我返回该数据以及我创建的函数的形心。当我运行此代码时,文本沿底部以直线运行:

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,而不是将其分组,但它就是不出现


有人能帮我解决我的问题吗。。。我附上了一个例子,让我的问题更加清楚:

一个问题是您附加的是元素而不是元素。要解决此问题,请切换如下代码:

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

svg.append("g").attr("class", "prac")
其次,更重要的是,您需要选择要将数据绑定到的元素,即使它们尚未创建,但Scott Murray已经创建了。因此,您的prac应如下所示:

svg.append("g.prac")
svg.append("g")
    .attr("class", "prac")
  .selectAll("g")
    .data(inner)
    .enter()
    .append("g")
    .attr(...)
下面是一个JSFIDLE,我在其中对g.prac和g.presence进行了转换:


我想这会让你走上一段路。我不确定文本是否真的到达了你想要的地方,但这至少可以修复你的结构。

没有足够的时间让你一直到达那里,但我认为关键的问题是那些g元素实际上没有附加到你的g.prac元素上——说到这里,prac附加了一个而不是一个。是的-刚刚检查过,它们甚至被附加到页面底部。这可能就是为什么文本会出现在它所在的位置。如果你还没有使用它,Google Chrome开发者工具会让你在d3中的工作变得更加简单——元素标签确实有助于你追踪那些你认为应该添加的元素。强烈推荐。@MattParker谢谢你的提示!但是,我怎样才能防止它被附加到底部呢?不,没关系,我会把它们放在我想要的地方。只是一个简短的lil问题,您可以看到var的存在。我有来自json数据USA、USA等的重复文本,这是一种过滤文本的方法,因此它只会重复文本一次——即使有多个文本。获取唯一值可能会让人头疼。请尝试类似var countries=d3.nest.keyfunctiond{return d.Country;}.entriesnodes;要获得正确的输出结构可能需要付出努力,但这些方法的结合应该会让你达到目的。