【发布时间】:2015-02-26 00:27:36
【问题描述】:
我对 javascript 和 dc.js 非常陌生。单击按钮后,我尝试删除和更新折线图中的新数据。但是,当重新绘制折线图时,我遇到了一些问题。一些区域出现并与图形区域重叠。这是重绘前后折线图的图片 谁能帮我解决这个问题?我真的很感激每一个答案。
谢谢!
这是我的代码
**Just sample code, I have 5000 objects in my array**
var data2 = [{"year": 2010,"total": 1},
{"year": 2010,"total": 1},
{"year": 2000, "total":1},
{"year": 2000, "total":1},
{"year": 1950, "total":1},
{"year": 1950, "total":1},
{"year": 1987, "total":1},
{"year": 1987, "total":1},
{"year": 2000, "total": 1}];
var dataCrossfilter = crossfilter(data2);
var yearDimension = dataCrossfilter.dimension(function (d) {
return d.year;
});
var yearGroup = yearDimension.group().reduceSum(function (d) {
return d.total;
});
var yChart = dc.lineChart("#yChart");
yChart.width(960)
.height(300)
.margins({top: 10, right: 10, bottom: 20, left: 40})
.x(d3.scale.linear().domain([1800,2020]))
.dimension(yearDimension)
.group(yearGroup)
.renderArea(true)
.brushOn(true)
.transitionDuration(1500)
.elasticY(true)
.elasticX(true)
.xAxis();
dc.renderAll();
//// 加载按钮
var load_button = function(data) {
return function load_it() {
dataCrossfilter.remove();
dataCrossfilter.add(data);
dc.redrawAll();
}
}
button1 = load_button(data1);
button2 = load_button(data2);
非常感谢!我真的很感激每一个答案。
【问题讨论】:
-
我相信你,但我似乎无法用这么少的数据重现这一点。这是我对您提供的内容的小提琴,还有另一个相同大小的虚拟数据集:jsfiddle.net/gordonwoodhull/becxo0fv/5 - 也许您可以添加它以使其中断?
-
您是否尝试使用
yChart.resetSvg();清除图表并完全重绘?
标签: javascript d3.js linechart dc.js crossfilter