您好我有一个jss从csv文件生成高图:
<script>
function Showgraph(){
$.ajax({
url: 'Merge_files.php',
// success: function(data) {
// $('.result').html(data);
// alert('Load was performed.');
// }
});
var options = {
chart: {
renderTo: 'container',
defaultSeriesType: 'line'
},
title: {
text: 'Measurement data'
},
xAxis: {
//categories: [],
title: {
text: 'Measurement number'
},
labels: {
enable: false,
y:20, rotation: -45, allign: 'right'
}
},
yAxis: {
title: {
text: 'Retro Reflection'
}
},
series: []
};
sleep(100);
$.get('Sensor_datafull.txt', function(data) {
// Split the lines
var lines = data.split('\n');
$.each(lines, function(lineNo, line) {
var items = line.split(',');
var series = {
data: []
};
$.each(items, function(itemNo, item) {
if (itemNo == 0) {
series.name = item;
} else {
series.data.push(parseFloat(item));
}
});
options.series.push(series);
});
// Create the chart
var chart = new Highcharts.Chart(options);
})
}
<!--Sleep function to pause the Showgraph, so the fiels in Merge_files will be generated before chart -->
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
</script>
脚本&#34;合并&#34;将7个文件合并为一个大文件并创建图表。文件每秒都会填充新的测量数据。合并文件如下所示:
0.20,-517.2,-314.9,227.2,.... 0.33,-228.5,-79.0,130.7,.... 0.50,-286.6,-140.6,84.5,.... 0.70,-96.6,-62.6,23.0,.... 1.00,-18.6,-12.4,11.6,.... 1.50,-62.7,-35.9,-11.0,.... 2.00,-37.7,-24.0,-1.5,...
问题是当文件达到一定大小时,不能制作高图并冻结。然后我想知道是否有可能使高图表仅像第一个数据(是类别)和csv中每行的500个最后数据一样。文件什么的?任何其他解决问题的想法也欢迎!
提前感谢你的帮助!答案 0 :(得分:0)
一开始问题是您的架构不正确。你不能使用睡眠功能,因为如果你的第一个ajax加载的时间更长,那么更糟糕的代码就是有意义的。为避免这种情况,您可以调用一次。在PHP文件中,使用数据准备类似数组的结构并将其转换为JSON(通过json_encode函数)。在javascrpt中,调用$ .getJSON()并初始化您的图表。