2013-11-26 2 views
0

데이터의 색조가 CSV 파일에 있고 데이터에서 그래프를 만들려고 할 때 자바 스크립트가 각 행의 마지막 요소를 읽지 않습니다. 적은 양의 데이터로 다른 CSV 파일로 자바 스크립트를 시도했지만 정상적으로 작동했습니다. Java에서, 때때로 스캐너를 사용할 때 system.out.println ("\ n")을 추가해야 할 때가 있습니다. 왜냐하면 콘솔에서 입력을 쓸 수 없도록하기 때문에 때때로 라인을 건너 뛰기 때문입니다. 너무 내 CSV 파일에 문제가 있습니까? 여기 행의 마지막 요소가 누락되었습니다.

내 자바 스크립트입니다 :

function f() { 
$(document).ready(function() { 
    var arr1 = new Array(); 
    var arr2 = new Array(); 
    var arr3 = new Array(); 
    var dat = {}; 
    var options = { 
    chart: { 
     renderTo: 'container', 
     defaultSeriesType: 'bar', 
     zoomType: 'xy', 
    }, 
    title: { 
     text: 'Gene' 
    }, 
    subtitle: { 
     text: name 
    }, 
    xAxis: { 
     categories: [] 
    }, 
    legend: { 
     enabled: false 
    }, 
    yAxis: { 
     title: { 
      text: 'Position' 
     }, 
     minTickInterval: 10 , 
     labels: { 
      enabled: false 
     } 
    plotOptions: { 
      series: { 
       stacking: 'normal', 
      } 
    }, 
    tooltip: { 
     formatter: function() { 
      return 'Sample: <b>' + this.x + '</b><br/><br/>' + 
      '<n>Position: <b>' + this.series.name + '</b><br/><br/>'+ 
      '<n>SNP ID: <b>' + arr2[arr1.indexOf(this.series.name)] + '</b><br/><br/>'; 
     } 
    }, 
    series: [] 
    }; 
    $.get('example.asp', function(data) { 
    // Split the lines 
    var lines = data.split('\n'); 

    // Iterate over the lines and add categories or series 
    $.each(lines, function(lineNo, line) { 
     var items = line.split(','); 
     // header line containes categories 
     if (lineNo == 0) { 
      $.each(items, function(itemNo, item) { 
       options.xAxis.categories.push(item); 
      }); 
     } 
     // the rest of the lines contain data with their name in the first position 
     else { 
      var series = { 
       data: [] 
      }; 
      $.each(items, function(itemNo, item) { 
       var data = {}; 
       var hash = {}; 
       if (itemNo == 1) { 
        series.name = item; 
        arr1.push(item); 
       } 
       else if (itemNo == 0) { 
        arr2.push(item); 
       } 
       else //if //(itemNo < items.length-1){ 
        { 
        arr3.push(item); 
        hash[item] = 1; 
        data.y = hash[item]; 
        if (item === '15') { 
         data.color = 'grey'; 
        } 
        else if (item === '3') { 
         data.color = 'blue'; 
        } 
        else if (item === '16') { 
         data.color = 'white'; 
        } 
        else { 
         data.color = 'red'; 
        } 

        series.data.push(data); 
       //  dat.push(series); 
       } 
      }); 
      options.series.push(series); 
     // dat.push(series); 
     } 
     }); 

     // Create the chart 
    var chart = new Highcharts.Chart(options); 
}); 
    }); 
} 

여기처럼 내 csv 파일이 모습입니다 : 참조 나는 jsfiddle에 문제를 재현하기 위해 노력했다 link

+1

CSV 파일이 많은 양의 데이터를 처리하는 경우 클라이언트 측에서 CSV 처리를 수행하는 것이 올바른 방법이 아닌 것 같습니다. – rdodev

+0

그럼 어느 것을 사용해야합니까? JSON? 어떤 제안이 있으십니까? –

+0

필자가 제안하는 것은 백엔드에서 파이썬, 루비, 펄 또는 무엇이든 원하는대로 처리하는 CSV 처리를 JS가 아닌 구조화 된 데이터베이스에 저장하는 것입니다. – rdodev

답변

0

하지만, 모든 것이 나를 위해 잘 작동합니다 : http://jsfiddle.net/ZM6A5/

각 줄마다 x 개의 요소가 있고 series.data에는 x - 2 개의 요소가 들어 있습니다. 각 줄의 시작은입니다.- 두 개의 첫 번째 요소가 데이터의 일부가 아닙니다.

문제가있는 곳을 알려 주시거나 jsFiddle에서 다시 만드시겠습니까?

관련 문제