D3.js D3-更新和清理图表';点击一下就可以了
我正试图实现这个简单的仪表板来与我的后端协同工作。问题是后端并不总是提供相同数量的“类别”,因此条形图不能按预期工作。我对示例数据进行了修改,单击饼图中的不同“组”后出现问题D3.js D3-更新和清理图表';点击一下就可以了,d3.js,D3.js,我正试图实现这个简单的仪表板来与我的后端协同工作。问题是后端并不总是提供相同数量的“类别”,因此条形图不能按预期工作。我对示例数据进行了修改,单击饼图中的不同“组”后出现问题 如何从条形图中清除数据并仅显示每个组可用的条形图和标签?您的图表不会删除现有的额外元素,并在需要时追加。 我更新了您的以应用输入更新退出模式: var plot = d3.select("#barChartPlot") .datum(currentDatasetBarChart) .select('g.plot')
如何从条形图中清除数据并仅显示每个组可用的条形图和标签?您的图表不会删除现有的额外元素,并在需要时追加。 我更新了您的以应用输入更新退出模式:
var plot = d3.select("#barChartPlot")
.datum(currentDatasetBarChart)
.select('g.plot');
var dataBound = plot.selectAll("rect")
.data(currentDatasetBarChart);
dataBound.exit()
.remove();
dataBound.enter().append('rect');
dataBound.transition()
.duration(750)
.attr("x", function(d, i) {
return xScale(i);
})
.attr("width", width / currentDatasetBarChart.length - barPadding)
.attr("y", function(d) {
return yScale(d.measure);
})
.attr("height", function(d) {
return height-yScale(d.measure);
})
.attr("fill", colorChosen);
这基本上意味着每次选择更改时,您都需要重新选择所有矩形,删除无用的矩形,添加新矩形,然后更新所有属性
我还向包含矩形的组添加了一个plot
类,以便能够在适当的位置对其进行操作
作为旁注,我建议:
- 使用
,而不是自己操作标签轴
- 每个栏创建一个svg组,包含rect和文本,并翻译完整的组
- 使用D3V4
append
。您需要添加labels.enter().append('text').classed(“yAxis”,true)代码>
var plot = d3.select("#barChartPlot")
.datum(currentDatasetBarChart)
.select('g.plot');
var dataBound = plot.selectAll("rect")
.data(currentDatasetBarChart);
dataBound.exit()
.remove();
dataBound.enter().append('rect');
dataBound.transition()
.duration(750)
.attr("x", function(d, i) {
return xScale(i);
})
.attr("width", width / currentDatasetBarChart.length - barPadding)
.attr("y", function(d) {
return yScale(d.measure);
})
.attr("height", function(d) {
return height-yScale(d.measure);
})
.attr("fill", colorChosen);