我正在开发一个web应用程序,我使用JS Highcharts插件来帮助我绘制一些图表。有时我会加载一个超过100000行、4列的CSV文件。
显然,图表插件会遇到一些问题。所以,我不能直接下采样我的CSV文件,但是,我找到了一个下采样Highcharts插件(http://www.highcharts.com/plugin-registry/single/13/Highcharts-Downsample)来做这项工作!
但实际上,这个插件只能用一个阈值来初始化一个序列。我不知道如何将此方法应用于CSV加载的系列。
我像这样加载CSV,而不是由插件用法指定的"series“属性:
data: {csv: csv},插件文档告诉我们这样使用它:
series: [{
downsample: {
threshold: 1000 // 0 disables downsampling for this series.
},
data: // Your data (array of arrays with two values or array of numerical values)
}]但是我没有使用" series“属性,因为我直接从CSV文件加载我的系列。
因此,我想找到一个解决方案,使用这个downsample插件对我的CSV文件进行下采样。
非常感谢!
发布于 2016-04-11 17:27:36
所以,最终,我找到了一个解决方案!我自己解析我的CSV文件,我可以指定downsample属性:
var options = { //Initialize my chart's option
chart: {
zoomType: 'x',
renderTo: $('#chart-'+unused)[0]
},
title: {
text: elem.title
},
credits: {
enabled: false
},
xAxis: {
categories: [], //initialize empty category array
type: "line"
},
yAxis: {
title: {
text: "milli-SI"
}
},
series: [] //initialize empty serie array
};
var lines = csv.split('\n');
$.each(lines, function(lineNo, line) {
var items = line.split(',');
if (lineNo == 0) {
$.each(items, function(itemNo, item) {
if (itemNo > 0) {
var series = {
data: [],
name: item,
downsample : {threshold: 2000} //initialize downsample for a specific serie
};
options.series.push(series);
}
});
}
else {
$.each(items, function(itemNo, item) {
if (item.length == 0)
return;
if (itemNo == 0) {
options.xAxis.categories.push(item);
} else {
options.series[itemNo -1].data.push(parseFloat(item));
}
});
}
});
var chart = new Highcharts.Chart(options);https://stackoverflow.com/questions/36543152
复制相似问题