2016-05-22 29 views
2

我想將多個csv文件加載到一個圖表中,以便我可以使用鑽取。由於每個數據集具有不同數量的觀測值或行,因此我無法使用具有多個列的單個csv。我想出瞭如何使用嵌套的$ .get()函數加載多個csv。但是,Highcharts將只繪製引用的最後一個數據集。我試着用三種不同的版本編寫代碼,但所有的代碼都只繪製引用的最後一個數據集。我研究過Highcharts文檔,但沒有找到符合我要求的任何內容。如何使用Highcharts數據模塊加載多個CSV

我使用Highcharts的數據模塊來加載csv,因爲它很簡單。不過,我願意接受其他需要解析文件的解決方案。以下是三種不同版本的我試過的樣本:

$.get('pref.csv', function(data1) { 
    $.get('create.csv', function(data2) { 
     $(chartID).highcharts({ 
      data: { 
       csv: data2, data1 
      }, 
      chart: { 
       type: 'bar' 
      } 
     }); 
    }); 
}); 

或者

$.get('pref.csv', function(data1) { 
    $.get('create.csv', function(data2) { 
     $(chartID).highcharts({ 
      data: { 
       csv: data2, 
       csv: data1 
      }, 
      chart: { 
       type: 'bar' 
      } 
     }); 
    }); 
}); 

或者

$.get('pref.csv', function(data1) { 
    $.get('create.csv', function(data2) { 
     $(chartID).highcharts({ 
      data: { 
       csv: data1 
      }, 
      data: { 
       csv: data2 
      }, 
      chart: { 
       type: 'bar' 
      } 
     }); 
    }); 
}); 

預先感謝您!

UPDATE 這是加載兩個或更多csv文件以在xAxis上使用日期的折線圖中使用的解決方案。

data.csv 
Date,Mean 
2001-01-01,0 
2001-02-01,2.9 
2001-03-01,12.9 
2001-04-01,27.2 
2001-05-01,38.5 
2001-06-01,43.9 
2001-07-01,40.7 
2001-08-01,45.8 
2001-09-01,50.6 

data2.csv 
Date,Mean 
2001-01-01,2 
2001-02-01,1.6 
2001-03-01,8.2 
2001-04-01,13.6 
2001-05-01,15.6 
2001-06-01,17.1 
2001-07-01,15.8 
2001-08-01,17 
2001-09-01,13.3 

function parseCSV(csvFile) { 
    // empty array for storing the chart data 
    var data = []; 
    // Split the lines 
    var lines = csvFile.split('\n'); 
    // Iterate over the lines and add categories or series 
    $.each(lines, function(lineNo, line) { 
     if (lineNo != 0) { 
      var items = line.split(','); 
      // Insert date and player count into the series 
      data.push([Date.parse(items[0]), parseFloat(items[1])]); 
     } 
    }); 
    return data 
} 


$.get('data.csv', function(data1) { 
    $.get('data2.csv', function(data2) { 
     // parse data1 
     var series1 = parseCSV(data1) 
      // parse data2 
     var series2 = parseCSV(data2) 

     $('container').highcharts({ 
      chart: { 
       type: 'spline' 
      }, 
      series: [{ 
       data: series1 
      }, { 
       data: series2 
      }], 
     }); 

    }); 
}); 
+0

請提供例如 「下鑽」 – Fabricator

回答

0

data.js模塊需要單個文件。所以你需要通過ajax加載兩個或多個文件(通過$ .get獲得)。然後準備自定義分析並創建系列數組的結構。

手冊:

+1

謝謝塞巴斯蒂安。經過大量的研究和試驗和錯誤之後,我想出瞭如何解析csv。 –