2016-04-11 13 views
0

私はWebアプリを開発しています。私はグラフを描画するのに役立つJS Highchartsプラグインを使用しています。場合によっては、4列の100,000行以上のCSVファイルを読み込むことがあります。Highcharts downsampling - CSV

明らかに、チャートプラグインはいくつかの問題を抱えています。 CSVファイルを直接ダウンサンプリングすることはできませんが、Downsampling Highchartsプラグイン(http://www.highcharts.com/plugin-registry/single/13/Highcharts-Downsample)が見つかりました!

しかし、実際には、このプラグインだけ..閾値とセリエを初期化することができると私はCSVによってロードされた私のシリーズにこの方法を適用する方法がわからない...

私はそのように私のCSVを読み込みます

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) 
}] 

しかし、私は「シリーズ」属性を使用していないbecaus E私は..だからCSVファイルから直接

を私のシリーズをロードし、私は

はどうもありがとうございました...このダウンサンプリングHichartsプラグインを使用して、私のCSVファイルをダウンサンプリングするための解決策を見つけたいです!

答えて

0

最後に、私は解決策を見つけました! CSVファイルを自分で解析し、ダウンサンプル属性を指定できます。

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);