highcharts的动态画曲线问题
highcharts的动态画曲线问题,官网上给了一个demo是随着时间的推移每秒随机生成一个点,最近头给我一个任务是,3分钟刷新一次然后有180个点,数据是后台传过来的,不知道怎么弄,希望有这方面经验的人给个建议。
[解决办法]
如果是jquery就更简单了,highcharts对jquery的支持相当好。网上有很多不错的例子你搜索下。
参考下面几个步骤的思路:
首先画chart,注意先不加series:
$(document).ready(function() {
chart_answer = new Highcharts.Chart({
chart: {
backgroundColor: '#ffffff',
borderColor: '#a2a2a1',
borderWidth: 0,
borderRadius: 0,
renderTo: 'answer_time_chart',
type: 'area',
plotBackgroundColor: '#fffdf6'
},
colors: ['#3399FF'],
legend: {
enabled: false
},
title: {
text: ''
},
tooltip: {
borderRadius: 0,
borderWidth: 0,
shadow: false,
style: {
fontSize: '7pt',
color: '#000000'
},
formatter: function() {
return 'Time: ' + this.x + '
Time: ' + (this.y/60
[解决办法]
0) + ':' + (this.y % 60 < 10 ? '0':'')+(this.y % 60); }
},
xAxis: {
labels: {
rotation: -45,
x: 0,
y: 40,
style: {
color: '#333333'
}
},
lineWidth: 1,
lineColor: '#333333',
minPadding: 0,
maxPadding: 0,
title: {
text: ''
},
tickInterval: 2,
tickmarkPlacement: 'on'
},
yAxis: {
gridLineWidth: 0,
labels: {
formatter: function() {
return (this.value/60
[解决办法]
0) + ':' + (this.value % 60 < 10 ? '0':'')+(this.value % 60); },
style: {
color: '#333333'
}
},
lineWidth: 1,
lineColor: '#333333',
min: 0,
minPadding: 0,
maxPadding: 0,
title: {
text: ''
}
}
});
var jsonURL = 'http://website.com/json-output.php?report=chart_answer';
jQuery.getJSON( jsonURL, function( data ){
var arr = [];
$.each(data.data, function(key, val) {
var y = val.y;
var customTooltip = val.customTooltip;
arr.push({y: y, customTooltip: customTooltip})
})
var cats = [];
$.each(data.categories, function(key, val) {
cats.push(val.cat)
})
chart_answer.xAxis[0].setCategories(cats);
var series = {data: arr};
chart_answer.addSeries(series);
});
series: [{
name: 'Random data',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -19; i <= 0; i++) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
})()
}]
{ "data": [ { "y": 2 }, { "y": 3 }, { "y": 3 }, { "y": 4 }, { "y": 4 }, { "y": 4 }, { "y": 3 }, { "y": 2 }, { "y": 2 }, { "y": 3 }, { "y": 3 }, { "y": 3 }, { "y": 4 }, { "y": 4 }, { "y": 4 }, { "y": 4 } ], "categories": [ { "cat": "4:45-5:00" } , { "cat": "5:00-5:15" } , { "cat": "5:15-5:30" } , { "cat": "5:30-5:45" } , { "cat": "5:45-6:00" } , { "cat": "6:00-6:15" } , { "cat": "6:15-6:30" } , { "cat": "6:30-6:45" } , { "cat": "6:45-7:00" } , { "cat": "7:00-7:15" } , { "cat": "7:15-7:30" } , { "cat": "7:30-7:45" } , { "cat": "7:45-8:00" } , { "cat": "8:00-8:15" } , { "cat": "8:15-8:30" } , { "cat": "8:30-8:45" } ], "tickmark": 4 }
var jsonURL = 'http://website.com/json-output.php?report=chart_answer';
//在这里开始加定时传值!
setInterval(function() {
jQuery.getJSON( jsonURL, function( data ){
var arr = [];
//注意这里开始给array赋值了
$.each(data.data, function(key, val) {
var y = val.y;
var customTooltip = val.customTooltip;
arr.push({y: y, customTooltip: customTooltip})
})
chart_answer.series[0].setData(arr);
});
}, 180000);//这里每180000毫秒传一次