首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Highcharts下采样- CSV

Highcharts下采样- CSV
EN

Stack Overflow用户
提问于 2016-04-11 16:10:09
回答 1查看 301关注 0票数 0

我正在开发一个web应用程序,我使用JS Highcharts插件来帮助我绘制一些图表。有时我会加载一个超过100000行、4列的CSV文件。

显然,图表插件会遇到一些问题。所以,我不能直接下采样我的CSV文件,但是,我找到了一个下采样Highcharts插件(http://www.highcharts.com/plugin-registry/single/13/Highcharts-Downsample)来做这项工作!

但实际上,这个插件只能用一个阈值来初始化一个序列。我不知道如何将此方法应用于CSV加载的系列。

我像这样加载CSV,而不是由插件用法指定的"series“属性:

代码语言:javascript
复制
data: {csv: csv},

插件文档告诉我们这样使用它:

代码语言:javascript
复制
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文件进行下采样。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-04-11 17:27:36

所以,最终,我找到了一个解决方案!我自己解析我的CSV文件,我可以指定downsample属性:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36543152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档