Highcharts之实时柱状图

Highcharts之实时柱状图

七月 07, 2019 阅读数(请刷新)

1、导入highcharts.js和jQuery.js

2、Html代码和js代码

1
2
3
//container2为js中定义的图表渲染容器的 HTML 元素的 id 或对象引用
<div id="container2" style="width:380px;height:230px;margin:0 auto;padding-top: 10px">
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

$(function(){
Highcharts.setOptions({
//全局配置参数是针对所有 Highcharts 图表生效的配置,所以只能通过 Highcharts.setOption 函数来配置
global:{
useUTC:false //默认true
/*使用UTC的优点是,无论用户代理的时区设置如何,时间都显示得一样。当实时加载数据或需要正确的夏令时转换时,可以使用本地时间*/
}
});
var chars;
$(document).ready(function(){
//调用柱状图函数
column()
});
});
function column(){
var options = {
// 图表定义

chart:{
backgroundColor:'transparent', //背景色

renderTo: 'container2',//图表渲染容器的 HTML 元素的 id 或对象引用
type:'column', //柱状图,修改column可改为饼图等其他图表
marginRight:10,

},
title:{
//标题名称
text: '',
//标题相对于水平对齐的偏移量,取值范围为:图表左边距到图表右边距,可以是负值,单位px
x:-20
},
/*x轴,默认情况下,x轴显示在图表的底部,y轴显示在左侧(多个y轴时可以是显示在左右两侧),通过设置chart.inverted = true 可以让x,y轴显示位置对调*/
xAxis:{
labels: {
rotation: -45 // 设置轴标签旋转角度
},
//x轴为0~24小时
categories: [
'00~02', '02~04', '04~06', '06~08',
'08~10', '10~12', '12~14', '14~16',
'16~18', '18~20', '20~22', '22~24'
],
crosshair: true

},
//y轴,y轴的数据值最小为0
yAxis: {
startOnTick:true, //为true时,设置min生效
min:0,

title: {
text: '超出人数',

},
},


//数据提示框,显示每个点的含义(对应的x轴和y轴数据)
tooltip: {
headerFormat: '<span style="font-size:10px">{point.key}</span><table><br>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y} 人</b></td></tr>',
},
//图例,图例说明是包含图表中数列标志和名称的容器
legend:{
enabled:false
},
//版权信息
credits:{
enabled:false
},
//数据列
series:[{
colorByPoint: true,
name:'总超出人数',

}]
};
//ajax请求,获取后台数据
$.ajax({
url:'/Software-cup001/record_dataServlet', //获取数据的页面地址

//默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。
cache:false,
dataType:"json",
data:{},
//仅在服务器数据改变时获取新数据。默认值: false
ifModified:false,
success: function(result){

var data = [];
//用于统计
var suma1=0; var suma6=0; var suma12=0; var sumb6=0; var sumb12=0;
var suma2=0; var suma7=0; var sumb1=0; var sumb7=0;
var suma3=0; var suma8=0; var sumb2=0; var sumb8=0;
var suma4=0; var suma9=0; var sumb3=0; var sumb9=0;
var suma5=0; var suma10=0; var sumb4=0; var sumb10=0;
var sum=0; var suma11=0; var sumb5=0; var sumb11=0;
var sumc1=0; var sumc4=0; var sumc7=0; var sumc10=0;
var sumc2=0; var sumc5=0; var sumc8=0; var sumc11=0;
var sumc3=0; var sumc6=0; var sumc9=0; var sumc12=0;
var sumd1=0; var sumd4=0; var sumd7=0; var sumd10=0;
var sumd2=0; var sumd5=0; var sumd8=0; var sumd11=0;
var sumd3=0; var sumd6=0; var sumd9=0; var sumd12=0;
var sume1=0; var sume4=0; var sume7=0; var sume10=0;
var sume2=0; var sume5=0; var sume8=0; var sume11=0;
var sume3=0; var sume6=0; var sume9=0; var sume12=0;

//jQuery.each() 函数用于遍历指定的对象和数组
jQuery.each(result, function(m,obj){
if(parseInt(obj.startTime)>=0&&parseInt(obj.startTime)<2){

if(suma1<obj.avgHeadNum&&obj.site=="校园大门"){
suma1=obj.avgHeadNum;
}
else if(sumb1<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb1=obj.avgHeadNum;
}
else if(sumc1<obj.avgHeadNum&&obj.site=="大型商超"){
sumc1=obj.avgHeadNum;
}
else if(sumd1<obj.avgHeadNum&&obj.site=="政府大门"){
sumd1=obj.avgHeadNum;
}
else if(sume1<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume1=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=2&&parseInt(obj.startTime)<4){

if(suma2<obj.avgHeadNum&&obj.site=="校园大门"){
suma2=obj.avgHeadNum;
}
else if(sumb2<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb2=obj.avgHeadNum;
}
else if(sumc2<obj.avgHeadNum&&obj.site=="大型商超"){
sumc2=obj.avgHeadNum;
}
else if(sumd2<obj.avgHeadNum&&obj.site=="政府大门"){
sumd2=obj.avgHeadNum;
}
else if(sume2<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume2=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=4&&parseInt(obj.startTime)<6){

if(suma3<obj.avgHeadNum&&obj.site=="校园大门"){
suma3=obj.avgHeadNum;
}
else if(sumb3<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb3=obj.avgHeadNum;
}
else if(sumc3<obj.avgHeadNum&&obj.site=="大型商超"){
sumc3=obj.avgHeadNum;
}
else if(sumd3<obj.avgHeadNum&&obj.site=="政府大门"){
sumd3=obj.avgHeadNum;
}
else if(sume3<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume3=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=6&&parseInt(obj.startTime)<8){

if(suma4<obj.avgHeadNum&&obj.site=="校园大门"){
suma4=obj.avgHeadNum;
}
else if(sumb4<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb4=obj.avgHeadNum;
}
else if(sumc4<obj.avgHeadNum&&obj.site=="大型商超"){
sumc4=obj.avgHeadNum;
}
else if(sumd4<obj.avgHeadNum&&obj.site=="政府大门"){
sumd4=obj.avgHeadNum;
}
else if(sume4<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume4=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=8&&parseInt(obj.startTime)<10){

if(suma5<obj.avgHeadNum&&obj.site=="校园大门"){
suma5=obj.avgHeadNum;
}
else if(sumb5<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb5=obj.avgHeadNum;
}
else if(sumc5<obj.avgHeadNum&&obj.site=="大型商超"){
sumc5=obj.avgHeadNum;
}
else if(sumd5<obj.avgHeadNum&&obj.site=="政府大门"){
sumd5=obj.avgHeadNum;
}
else if(sume5<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume5=obj.avgHeadNum;
}
}

else if(parseInt(obj.startTime)>=10&&parseInt(obj.startTime)<12){

if(suma6<obj.avgHeadNum&&obj.site=="校园大门"){
suma6=obj.avgHeadNum;
}
else if(sumb6<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb6=obj.avgHeadNum;
}
else if(sumc6<obj.avgHeadNum&&obj.site=="大型商超"){
sumc6=obj.avgHeadNum;
}
else if(sumd6<obj.avgHeadNum&&obj.site=="政府大门"){
sumd6=obj.avgHeadNum;
}
else if(sume6<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume6=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=12&&parseInt(obj.startTime)<14){

if(suma7<obj.avgHeadNum&&obj.site=="校园大门"){
suma7=obj.avgHeadNum;
}
else if(sumb7<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb7=obj.avgHeadNum;
}
else if(sumc7<obj.avgHeadNum&&obj.site=="大型商超"){
sumc7=obj.avgHeadNum;
}
else if(sumd7<obj.avgHeadNum&&obj.site=="政府大门"){
sumd7=obj.avgHeadNum;
}
else if(sume7<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume7=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=14&&parseInt(obj.startTime)<16){

if(suma8<obj.avgHeadNum&&obj.site=="校园大门"){
suma8=obj.avgHeadNum;
}
else if(sumb8<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb8=obj.avgHeadNum;
}
else if(sumc8<obj.avgHeadNum&&obj.site=="大型商超"){
sumc8=obj.avgHeadNum;
}
else if(sumd8<obj.avgHeadNum&&obj.site=="政府大门"){
sumd8=obj.avgHeadNum;
}
else if(sume8<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume8=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=16&&parseInt(obj.startTime)<18){

if(suma9<obj.avgHeadNum&&obj.site=="校园大门"){
suma9=obj.avgHeadNum;
}
else if(sumb9<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb9=obj.avgHeadNum;
}
else if(sumc9<obj.avgHeadNum&&obj.site=="大型商超"){
sumc9=obj.avgHeadNum;
}
else if(sumd9<obj.avgHeadNum&&obj.site=="政府大门"){
sumd9=obj.avgHeadNum;
}
else if(sume9<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume9=obj.avgHeadNum;
}
}

else if(parseInt(obj.startTime)>=18&&parseInt(obj.startTime)<20){

if(suma10<obj.avgHeadNum&&obj.site=="校园大门"){
suma10=obj.avgHeadNum;
}
else if(sumb10<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb10=obj.avgHeadNum;
}
else if(sumc10<obj.avgHeadNum&&obj.site=="大型商超"){
sumc10=obj.avgHeadNum;
}
else if(sumd10<obj.avgHeadNum&&obj.site=="政府大门"){
sumd10=obj.avgHeadNum;
}
else if(sume10<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume10=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=20&&parseInt(obj.startTime)<22){

if(suma11<obj.avgHeadNum&&obj.site=="校园大门"){
suma11=obj.avgHeadNum;
}
else if(sumb11<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb11=obj.avgHeadNum;
}
else if(sumc11<obj.avgHeadNum&&obj.site=="大型商超"){
sumc11=obj.avgHeadNum;
}
else if(sumd11<obj.avgHeadNum&&obj.site=="政府大门"){
sumd11=obj.avgHeadNum;
}
else if(sume11<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume11=obj.avgHeadNum;
}
}
else if(parseInt(obj.startTime)>=22&&parseInt(obj.startTime)<24){

if(suma12<obj.avgHeadNum&&obj.site=="校园大门"){
suma12=obj.avgHeadNum;
}
else if(sumb12<obj.avgHeadNum&&obj.site=="学校食堂"){
sumb12=obj.avgHeadNum;
}
else if(sumc12<obj.avgHeadNum&&obj.site=="大型商超"){
sumc12=obj.avgHeadNum;
}
else if(sumd12<obj.avgHeadNum&&obj.site=="政府大门"){
sumd12=obj.avgHeadNum;
}
else if(sume12<obj.avgHeadNum&&obj.site=="交通枢纽"){
sume12=obj.avgHeadNum;
}
}



});
//加入数据
data.push(
{name:"00:00~02:00",y:suma1+sumb1+sumc1+sumd1+sume1},
{name:"02:00~04:00",y:suma2+sumb2+sumc2+sumd2+sume2},
{name:"04:00~06:00",y:suma3+sumb3+sumc3+sumd3+sume3},
{name:"06:00~08:00",y:suma4+sumb4+sumc4+sumd4+sume4},
{name:"08:00~10:00",y:suma5+sumb5+sumc5+sumd5+sume5},
{name:"10:00~12:00",y:suma6+sumb6+sumc6+sumd6+sume6},
{name:"12:00~14:00",y:suma7+sumb7+sumc7+sumd7+sume7},
{name:"14:00~16:00",y:suma8+sumb8+sumc8+sumd8+sume8},
{name:"16:00~18:00",y:suma9+sumb9+sumc9+sumd9+sume9},
{name:"18:00~20:00",y:suma10+sumb10+sumc10+sumd10+sume10},
{name:"20:00~22:00",y:suma11+sumb11+sumc11+sumd11+sume11},
{name:"22:00~24:00",y:suma12+sumb12+sumc12+sumd12+sume12}
);

options.series[0].data = data;
chart = new Highcharts.Chart(options);
}
});
//定时器,每分钟访问一次column()函数
setTimeout("column()",60000);
}

在这里插入图片描述

3、Highcharts

Highcharts API文档

Highcharts.js下载地址

Highcharts提供CDN 服务,在下载界面可见详细描述
jQuery下载