Javascript 如何从highcharts中的系列中划分数据

Javascript 如何从highcharts中的系列中划分数据,javascript,highcharts,Javascript,Highcharts,我想将.csv文件中的数据处理为: 将输入的数据除以10,例如588=>58.8 从数据中删除异常值或更改为零,例如8888=>0 这是我的javascript,非常感谢你的帮助 $.get('http://www.geoinc.org/Dropbox/geo/sites/GC_ROOM/charts/hassayampa.csv', function(data) { // Split the lines var lines = data.split('\n');

我想将.csv文件中的数据处理为:

将输入的数据除以10,例如588=>58.8 从数据中删除异常值或更改为零,例如8888=>0 这是我的javascript,非常感谢你的帮助

$.get('http://www.geoinc.org/Dropbox/geo/sites/GC_ROOM/charts/hassayampa.csv', function(data)
   {
      // Split the lines
      var lines = data.split('\n');
      var i = 0;
      var csvData = [];



      // Iterate over the lines and add categories or series
      $.each(lines, function(lineNo, line)
      {
         csvData[i] = line.split(',');

         i = i + 1;

      });


      var columns = csvData[0];

      var categories = [], series = [];


      for(var colIndex=0,len=columns.length; colIndex<len; colIndex++)
      {
         //first row data as series's name
         var seriesItem=
         {
            data:[],
            name:csvData[0][colIndex]
         };

         for(var rowIndex=1,rowCnt=csvData.length; rowIndex<rowCnt; rowIndex++)
         {
            //first column data as categories,
            if (colIndex == 0)
            {
               categories.push(csvData[rowIndex][0]);
            }
            else if(parseFloat(csvData[rowIndex][colIndex])) // <-- here
            {
               seriesItem.data.push(parseFloat(csvData[rowIndex][colIndex])); 
            }
         };
         //except first column
         if(colIndex>0)series.push(seriesItem);
      }         



      // Create the chart
      var chart = new Highcharts.Chart(
      {
         chart:
         {
            renderTo: 'test',
            type: 'line',
            zoomType: 'x',
         },
         title: {
                text: 'Daily Average Temperature',
                x: -20 //center
            },
            subtitle: {
                text: 'Source: HASSAYAMPA',
                x: -20
            },

         xAxis: 
         {
            categories: categories,
            labels:
            {
               step: 80,
            },
            tickWidth: 0
         },
         yAxis: 
         {
                    title: {
                    text: 'Temperature (\xB0C)'
                },
            //min: 0
         },
         tooltip:
         {
            formatter: function()
            {
               return '<b>'+ this.series.name +'</b><br/>'+ this.x +': '+ this.y +'\xB0C';
            }
         },
         legend:
         {
            layout: 'vertical',
            //backgroundColor: '#FFFFFF',
            //floating: true,
            align: 'left',
            //x: 100,
            verticalAlign: 'top',
            //y: 70,
            borderWidth: 0
         },

         plotOptions:
         {
            area:
            {
               animation: false,
               stacking: 'normal',
               lineColor: '#666666',
               lineWidth: 1,
               marker:
               {
                  lineWidth: 1,
                  lineColor: '#666666'
               }
            }
         },
         series: series
      });

   });      

我不知道你在问什么,但我会试试看

首先,这段代码不合理。它不仅会跳过N,还会跳过0,这是有效的数字数据:

else if(parseFloat(csvData[rowIndex][colIndex]))
{
    seriesItem.data.push(parseFloat(csvData[rowIndex][colIndex])); 
}
相反,我会:

//first column data as categories,
if (colIndex == 0)
{
   categories.push(csvData[rowIndex][0]);
}
else
{
    var fVal = parseFloat(csvData[rowIndex][colIndex]);
    if (!isNaN(fVal))
    {
        fVal = fVal / 10.0; //<-- here's the division!!
        seriesItem.data.push(fVal);
    }   
}

至于如何排除异常值,最大的问题是您希望如何排除异常值?一个简单的最小/最大标准?然后在serieItem.data.push…

之前检查fVal是否在这些限制范围内,如果ParseFloatCsvData[rowIndex][colIndex]//我想将数据中的值除以10,您还想要什么。所以588=>58.5,因为这些是以摄氏度为单位的温度,原始数据没有设置小数点,所以我必须操作脚本中的数据,以确保它被解释为有意义的东西@鲁芬,谢谢你的迅速关注。谢谢你的帮助。这帮了大忙!我可以单独处理异常值。再次感谢@mark