Javascript 错误:<;路径>;属性d:预期的弧标志(';0';或';1';)

Javascript 错误:<;路径>;属性d:预期的弧标志(';0';或';1';),javascript,d3.js,transition,Javascript,D3.js,Transition,我一直在寻找可能的解决办法,但没有任何办法 问题是,当我尝试相应地更新数据和饼图时,转换不起作用,并且多次打印主题中提到的错误。我对JS有点陌生,所以我想寻求一些帮助 代码: var pie = d3.pie(); var pathArc = d3.arc() .innerRadius(200) .outerRadius(250); var color = d3.scaleOrdinal(d3.schemeCategory10);

我一直在寻找可能的解决办法,但没有任何办法

问题是,当我尝试相应地更新数据和饼图时,转换不起作用,并且多次打印主题中提到的错误。我对JS有点陌生,所以我想寻求一些帮助

代码:

    var pie = d3.pie();

    var pathArc = d3.arc()
        .innerRadius(200)
        .outerRadius(250);

    var color = d3.scaleOrdinal(d3.schemeCategory10);

    var t = d3.transition()
        .duration(500);

    var path = piesvg.selectAll("path")
        .data(pie(gdp_values));

    path.exit()
        .transition(t)
        .remove();

    path.transition(t)
        .attr("d",function (d) {
            return pathArc(d);
        })
        .attr("fill",function(d, i){return color(i);});

    path.enter()
        .append("path")
        .transition(t)
        .attr("d",pathArc)
        .attr("fill",function(d, i){return color(i);});
初始数据集(gdp_值)

当数据更改为另一个类似的数据时,它确实起作用,但是当数据更改如下时,转换不起作用,并抛出相同的错误40次

[7714000000, 123900000000, 846200000000]

有什么想法吗

您必须颠倒选择顺序:输入选择应在更新选择之前:

path.enter()
    .append("path")
    .transition(t)
    .attr("d", pathArc)
    .attr("fill", function(d, i) {
        return color(i);
    });

path.transition(t)
    .attr("d", function(d) {
        return pathArc(d);
    })
    .attr("fill", function(d, i) {
        return color(i);
    });
以下是演示:

var piesvg=d3.select(“svg”).append(“g”).attr(“transform”、“translate(250250)”)
var gdp_值=[40750000000、41730000000、439800000000、680900000、980900000、11600000000、1727000000、224900000000、238900000000、30740000000];
var gdp_值2=[7714000000、12390000000、8462000000000];
var pie=d3.pie();
var pathArc=d3.arc()
.内半径(200)
.外层(250);
var color=d3.scaleOrdinal(d3.schemeCategory 10);
var t=d3.transition()
.期限(500);
更新(gdp_值)
setTimeout(函数(){
更新(gdp_值2);
}, 1000)
功能更新(数据){
var path=piesvg.selectAll(“路径”)
.数据(pie(数据));
path.exit()
.过渡(t)
.remove();
path.enter()
.append(“路径”)
.过渡(t)
.attr(“d”,路径弧)
.attr(“填充”,函数(d,i){
返回颜色(i);
});
路径转换(t)
.attr(“d”,函数(d){
返回路径弧(d);
})
.attr(“填充”,函数(d,i){
返回颜色(i);
});
}


我在对图表进行数据更新时遇到此错误。在我的案例中,解决方案是防止在加载数据期间绘制图表。猜测arcTween代码不能很好地处理数据更改。

它不起作用,但我在这个链接上使用了名为
arcTween
的函数,而不是直接使用
pathArc
。它当时起作用了,但是动画不是那么令人满意@Gerardo Furtado你说的“没用”是什么意思?你看到我的片段了吗?
path.enter()
    .append("path")
    .transition(t)
    .attr("d", pathArc)
    .attr("fill", function(d, i) {
        return color(i);
    });

path.transition(t)
    .attr("d", function(d) {
        return pathArc(d);
    })
    .attr("fill", function(d, i) {
        return color(i);
    });