Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 如果D3.js中没有新数据,如何删除旧的图表数据并替换为新的图表数据并保留相同的数据_Javascript_Angular_Svg_D3.js - Fatal编程技术网

Javascript 如果D3.js中没有新数据,如何删除旧的图表数据并替换为新的图表数据并保留相同的数据

Javascript 如果D3.js中没有新数据,如何删除旧的图表数据并替换为新的图表数据并保留相同的数据,javascript,angular,svg,d3.js,Javascript,Angular,Svg,D3.js,js与angular一起创建图表当前我面临的问题是,当新数据可用时,它会被添加到旧数据中,即旧数据不会被新数据替换,并且如果新数据不可用,图表的外观也会改变(每次调用API时,“x”和“y”轴的字体都会变粗)我已经使用了d3.selectAll(“svg>*).remove(),但它没有按预期工作 private currentData:BarData[]=[]; 建造师( 私人区域:NgZone ) {} 恩戈尼尼特(){ this.title=this.child.name; consol

js与angular一起创建图表当前我面临的问题是,当新数据可用时,它会被添加到旧数据中,即旧数据不会被新数据替换,并且如果新数据不可用,图表的外观也会改变(每次调用API时,“x”和“y”轴的字体都会变粗)我已经使用了d3.selectAll(“svg>*).remove(),但它没有按预期工作

private currentData:BarData[]=[];
建造师(
私人区域:NgZone
) {}
恩戈尼尼特(){
this.title=this.child.name;
console.log(this.child);
}
ngAfterViewInit(){
log(“Child”+this.Child.name+“Actual”+this.Child.Actual);
这是initData();
this.initSvg();
这个.initAxis();
这个.drawAxis();
这个.drawCurrentBars();
此.zone.runOutsideAngular(()=>{
间隔(10000)。订阅(()=>{
//d3.选择全部(“svg>*”).remove();
//d3.选择全部(“条形图>*”).remove();
//d3.选择(“svg”).empty();
这是initData();
this.initSvg();
这个.initAxis();
这个.drawAxis();
这个.drawCurrentBars();
d3.选择全部().空();
});
});
}
//初始数据
私有initData(){
//d3.选择(“当前数据”).remove();
this.currentData.push({字母:“实际”,值:this.child.Actual});
this.currentData.push({字母:“Target”,值:300});
//d3.选择全部(“svg>*”).remove();
}
私有initSvg(){
this.svg=d3.select(this.svgRef.nativeElement);
this.width=500-this.margin.left-this.margin.right;
this.height=500-this.margin.top-this.margin.bottom;
this.g=this.svg
.附加(“g”)
艾特先生(
“转化”,
翻译(“+this.margin.left+”,“+this.margin.top+”)
);
}
私有initAxis(){
this.x=d3Scale.scaleBand().rangeRound([0,this.width])。填充(0.4);
this.y=d3Scale.scaleLinear().rangeRound([this.height,0]);
this.x.domain(this.currentData.map((d)=>d.letter));
这个.y.domain([0,d3Array.max(this.currentData,(d)=>d.value)];
}
私人提款轴(){
这个
.附加(“g”)
.attr(“类”、“轴--x”)
.attr(“变换”、“平移(0,+this.height+”))
.call(d3Axis.axisBottom(this.x));
这个
.附加(“g”)
.attr(“类”、“轴--y”)
.call(d3Axis.axisLeft(this.y).ticks(5))
.append(“文本”)
.attr(“类”、“轴标题”)
.attr(“变换”、“旋转(-90)”)
.attr(“y”,6)
.attr(“dy”,“0.71em”)
.attr(“文本锚定”、“结束”)
.文本(“”);
}
私人抽油杆(){
var color=D3刻度
.scaleOrdinal()
.范围([this.child.currentColour,“blue”]);
这个
.selectAll(“.bar”)
.data(此.currentData)
.输入()
.append(“rect”)
.attr(“类”、“条”)
//.merge(“rect”)
//.attr('x',函数(d){return(d.x);})
.attr(“x”,(d)=>此.x(d字母))
.attr(“y”,(d)=>此.y(0))
.attr(“宽度”,即.x.带宽()/2)
.attr(“height”,(d)=>Math.max(this.height-this.y(0),0))
.样式(“填充”,功能(d,i){
返回颜色(i);
})
.附加(“标题”)
.文本(功能(d){
返回d.letter+“:”+d.value;
});
这个
.selectAll(“rect”)
.transition()
.持续时间(800)
.延迟(功能(d,i){
返回i*200;
})
.轻松(d3.轻松反弹)
.attr(“y”,(d)=>此.y(d.value))
.attr(“高度”,(d)=>this.height-this.y(d.value));
}