Javascript 如何从highcharts中的系列中划分数据
我想将.csv文件中的数据处理为: 将输入的数据除以10,例如588=>58.8 从数据中删除异常值或更改为零,例如8888=>0 这是我的javascript,非常感谢你的帮助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');
$.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