我希望使用dimple.js为大型数据集绘制图表。我的代码工作正常。但是唯一的问题是图表需要超过45秒才能显示出来。我正在代码中寻求某种优化,以减少呈现图表所需的时间。以下是我的面积图的代码:

var dataset = [];

// The arrays xpoints and ypoints are populated dynamically
// with hundreds of thousands of points

var xpoints = chartData["xdata"];
var ypoints = chartData["ydata"];
var area1;

var svg = dimple.newSvg("#" + mychart, 700, 600);
var x, y;

for (var i = 0; i < xpoints.length; i++)
    dataset.push({
        x : xpoints[i],
        y1 : parseFloat(ypoints[i])
    });

var myChart = new dimple.chart(svg, dataset);
myChart.setBounds(75, 30, 480, 330);

y = myChart.addMeasureAxis("y", "y1");

x = myChart.addCategoryAxis("x", "x");
area1 = myChart.addSeries("First", dimple.plot.area, [ x, y ]);

var l = myChart.addLegend(65, 10, 510, 20, "right");
myChart.draw(1500);


是否可以通过dimple.js本身或使用d3.js来优化此代码?

最佳答案

恐怕Dimple在成千上万的点上表现不佳。它的绘制逻辑是为提高灵活性而构建的,在这种情况下,您需要编写特定的d3代码(将Dimple当作瑞士军刀,但这里需要一把手术刀)。即使使用原始d3,您也可能会遇到包含该点数的路径的问题。当然可以尝试原始d3,但您可能需要编写一些更复杂的附加逻辑以将每n个点平均在一起,然后详细放大。还要记住,即使使用了完美的客户端代码,您也将仅通过从服务器获取大量数据而遭受明显的等待。

关于javascript - 在dimple.js中处理大型数据集以呈现图表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31240120/

10-12 06:28