【发布时间】:2020-08-23 07:19:59
【问题描述】:
图表显示数据,但当触发更新功能时,它不显示更新的条形图。
如果我使用 .data() ,结果就像第一张图片中一样,如果我将其更改为 .datum() 则没有像第二张图片中那样的条形。
我还需要知道在哪里使用 d3 .data() vs .datum()。
如果可能,请更正我的代码。
提前致谢
var u= svg.selectAll("rect")
// .data(data)
.data(data.filter(function(d)
{
return d.ddata==allCourse[0]}))
// .datum(data.filter(function(d)
// {
// return d.ddata==allCourse[0]}))
// update bars
u
.enter().append("rect")
.merge(u)
// .attr("class", "bar")
// .transition()
// .duration(1000)
.attr("x", function(d) { return x(d.Item); })
.attr("y", function(d) { return y(+d.count); })
.attr("width", x.bandwidth())
.attr("height", function(d) { return height - y(+d.count); })
.attr("fill", function(d) { return colours(d.Item); })
.append("title")
.text(function(d){
return d.Item + " : " + d.count});
svg.append("text")
.attr("class", "label")
.attr("y", height/100)
.attr("x", width/2)
.attr("text-anchor", "middle")
.text("Assignments")
svg.append("text")
.attr("transform", "rotate(-90)")
//.text("Range")
.attr("y", -29)
.attr("x", -(height/2))
.attr("text-anchor", "middle")
.text('Ratio');
//This function will update the chart
function update(selectedCourse) {
// Select new data from the dataset upon select option
var dataFilter = data.filter(function(d)
{
return d.ddata==selectedCourse})
// update bars
u
.datum(dataFilter)
.transition()
.duration(250)
.attr("class", "bar")
.attr("x", function(d) { return x(d.Item); })
.attr("y", function(d) { return y(+d.count); })
.attr("fill", function(d) { return colours(d.Item); })
.attr("width", x.bandwidth())
.attr("height", function(d) { return height - y(+d.count); })
.text(function(d){
return d.Item + " : " + d.count});
}
【问题讨论】:
-
嗨,阿卜杜勒,你能创建一个 Codepen 并举例说明正在发生的事情吗?
-
它正在工作。问题出在函数中
标签: javascript d3.js svg bar-chart dropdown