Javascript 错误:<;路径>;属性d:预期的弧标志(';0';或';1';)
我一直在寻找可能的解决办法,但没有任何办法 问题是,当我尝试相应地更新数据和饼图时,转换不起作用,并且多次打印主题中提到的错误。我对JS有点陌生,所以我想寻求一些帮助 代码: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);
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);
});