Как обновить диаграмму d3 новыми данными: я реализую на ngOnchanges три функции:
this.removeSvg(this.data);
this.createSvg();
this.drawBars(this.data);
где createSvg ():
private createSvg(): void {
this.svg = d3.select("figure#histogram")
.append("svg")
.attr("width", '100%')
.attr("height", '100%')
.append("g")
.attr("transform", "translate(" + this.margin + "," + this.margin + ")");
}
и removeSvg ():
this.svg = d3.select("figure#histogram")
.exit().remove()
d3.select("#histogram").select("svg").remove();
и drawBars (data: any []):
private drawBars(data: any[]): void {
// Create the X-axis band scale
const x = d3.scaleBand()
.range([this.axisMin, 340])
.domain(data.map(d => d.xAxis))
.padding(0);
// Create the Y-axis band scale
const y = d3.scaleLinear()
.domain([0, this.axisMax])
.range([this.height, 0])
.nice();
// Create and fill the bars
this.svg.selectAll("bars")
.data(data)
.enter()
.append("rect")
.attr("x", d => x(d.xAxis))
.attr("y", d => y(d.yAxis))
.attr("width", x.bandwidth())
.attr("height", (d) => this.height - y(d.yAxis))
.attr("fill", "rgb(13, 185, 240)");
}
, но он не обновляет график, даже если я уверен, что данные обновляются (поэтому для первого графика мы продолжаем имея все остальные диаграммы, как будто это те же данные) любая помощь? возможно удаление или выход здесь ложны!