我有很多数据,我用堆积条形图来绘制。我的测试数据大约有500k个JSON对象(=50k行,每行有10个堆叠的部分)。
我的问题是我不知道如何只加载部分数据。它在浏览器中显示,因此宽度大约为1200到1920像素。我使用一个比例尺来计算线的大小。但是,如果我将窗口宽度设置为比数据大小小的值,d3.js会将每条线的宽度计算为0,这意味着什么都没有显示。因此,我必须设置一个50k的宽度来显示所有内容,但这有点不太实用-而且它让浏览器崩溃,只有当我使用大约10k的数据然后设置10k像素的宽度时才能工作。第二件事是它需要非常长的时间(5秒)才能渲染。
1.) 如何将数据显示在宽度为1920的窗口中,并在移动箭头键或概览图时加载其他数据?
2.) 如何同步数据?例如:如果我有一个长滑块,这个滑块应该确定我感兴趣的数据。因此,范围从0到50k,然后我滑动它并在~4000处。我想跳转到那个位置的图表中。
我的问题是我不知道如何只加载部分数据。它在浏览器中显示,因此宽度大约为1200到1920像素。我使用一个比例尺来计算线的大小。但是,如果我将窗口宽度设置为比数据大小小的值,d3.js会将每条线的宽度计算为0,这意味着什么都没有显示。因此,我必须设置一个50k的宽度来显示所有内容,但这有点不太实用-而且它让浏览器崩溃,只有当我使用大约10k的数据然后设置10k像素的宽度时才能工作。第二件事是它需要非常长的时间(5秒)才能渲染。
1.) 如何将数据显示在宽度为1920的窗口中,并在移动箭头键或概览图时加载其他数据?
2.) 如何同步数据?例如:如果我有一个长滑块,这个滑块应该确定我感兴趣的数据。因此,范围从0到50k,然后我滑动它并在~4000处。我想跳转到那个位置的图表中。
dataset = data;
var stack = d3.layout.stack();
stack(dataset);
var x= d3.scale.ordinal()
.domain(d3.range(dataset[0].length))
.rangeRoundBands([0, w]);
var y= d3.scale.linear()
.domain([0, 1])
.range([0, h]);
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var groups = svg.selectAll("g")
.data(dataset)
.enter()
.append("g");
var rects = groups.selectAll("rect")
.data(function (d) {
return d;
})
.enter()
.append("rect")
.attr("x", function (d, i) {
return x(i);
})
.attr("y", function (d) {
return y(d.y0 + d.y);
})
.attr("height", function (d) {
return h - y(d.y0);
})
.attr("width", x.rangeBand())
.attr("fill", function (d, i) {
return color(i);
});