# Highcharts 动态图
本章节我们将为大家介绍 Highcharts 的动态图。
我们在前面的章节已经了解了 Highcharts 配置语法。接下来让我们来看下 Highcharts 的其他配置。
## 每秒更新曲线图
### chart.events
chart.event 属性中添加 load 方法(图表加载事件)。在 1000 毫秒内随机产生数据点并生成图表。
```
chart: {
events: {
load: function () {
// 图表每秒更新一次
var series = this.series[0];
setInterval(function () {
var x = (new Date()).getTime(), // 当期时间
y = Math.random();
series.addPoint([x, y], true, true);
}, 1000);
}
}
}
```
### 实例
文件名:highcharts_dynamic_spline.htm
```
<html>
<head>
<title>Highcharts 教程 | 菜鸟教程(runoob.com)</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="/try/demo_source/highcharts.js"></script>
</head>
<body>
<div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
<script language="JavaScript">
$(document).ready(function() {
var chart = {
type: 'spline',
animation: Highcharts.svg, // don't animate in IE < IE 10.
marginRight: 10,
events: {
load: function () {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function () {
var x = (new Date()).getTime(), // current time
y = Math.random();
series.addPoint([x, y], true, true);
}, 1000);
}
}
};
var title = {
text: 'Live random data'
};
var xAxis = {
type: 'datetime',
tickPixelInterval: 150
};
var yAxis = {
title: {
text: 'Value'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
};
var tooltip = {
formatter: function () {
return '<b>' + this.series.name + '</b><br/>' +
Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
Highcharts.numberFormat(this.y, 2);
}
};
var plotOptions = {
area: {
pointStart: 1940,
marker: {
enabled: false,
symbol: 'circle',
radius: 2,
states: {
hover: {
enabled: true
}
}
}
}
};
var legend = {
enabled: false
};
var exporting = {
enabled: false
};
var 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 += 1) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
}())
}];
var json = {};
json.chart = chart;
json.title = title;
json.tooltip = tooltip;
json.xAxis = xAxis;
json.yAxis = yAxis;
json.legend = legend;
json.exporting = exporting;
json.series = series;
json.plotOptions = plotOptions;
Highcharts.setOptions({
global: {
useUTC: false
}
});
$('#container').highcharts(json);
});
</script>
</body>
</html>
```
以上实例输出结果为:
![](https://box.kancloud.cn/2015-12-29_5682517d4adc6.png)
## 通过点击添加数据
### chart.events
在 chart.event 属性中添加 click 方法(整个图表的绘图区上所发生的点击事件)。该方法在图表绘图区上发生点击时会添加新的数据点。
```
chart: {
events: {
click: function (e) {
// 获取点击坐标和数据项
var x = e.xAxis[0].value,
y = e.yAxis[0].value,
series = this.series[0];
// 添加点击的坐标
series.addPoint([x, y]);
}
}
}
```
### 实例
文件名:highcharts_dynamic_click.htm
```
<html>
<head>
<title>Highcharts 教程 | 菜鸟教程(runoob.com)</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="/try/demo_source/highcharts.js"></script>
</head>
<body>
<div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
<script language="JavaScript">
$(document).ready(function() {
var chart = {
type: 'scatter',
margin: [70, 50, 60, 80],
events: {
click: function (e) {
// find the clicked values and the series
var x = e.xAxis[0].value,
y = e.yAxis[0].value,
series = this.series[0];
// Add it
series.addPoint([x, y]);
}
}
};
var title = {
text: 'User supplied data'
};
var subtitle = {
text: 'Click the plot area to add a point. Click a point to remove it.'
};
var xAxis = {
gridLineWidth: 1,
minPadding: 0.2,
maxPadding: 0.2,
maxZoom: 60
};
var yAxis = {
title: {
text: 'Value'
},
minPadding: 0.2,
maxPadding: 0.2,
maxZoom: 60,
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
};
var legend = {
enabled: false
};
var exporting = {
enabled: false
};
var plotOptions = {
series: {
lineWidth: 1,
point: {
events: {
'click': function () {
if (this.series.data.length > 1) {
this.remove();
}
}
}
}
}
};
var series= [{
data: [[20, 20], [80, 80]]
}];
var json = {};
json.chart = chart;
json.title = title;
json.subtitle = subtitle;
json.xAxis = xAxis;
json.yAxis = yAxis;
json.legend = legend;
json.exporting = exporting;
json.series = series;
json.plotOptions = plotOptions;
$('#container').highcharts(json);
});
</script>
</body>
</html>
```
以上实例输出结果为:
![](https://box.kancloud.cn/2015-12-29_5682517d589bf.png)
- Highcharts 简介
- Highcharts 环境配置
- Highcharts 配置语法
- Highcharts 配置选项详细说明
- Highcharts 曲线图
- Highcharts 基本曲线图
- Highcharts 带有数据标签曲线图表
- Highcharts 异步加载数据曲线图表
- Highcharts 时间序列,可缩放的图表
- Highcharts X 轴翻转曲线图
- Highcharts 带标记曲线图
- Highcharts 标示区曲线图
- Highcharts 时间间隔图表
- Highcharts 对数图表
- Highcharts 区域图
- Highcharts 基本区域图
- Highcharts 使用负数区域图
- Highcharts 堆叠区域图
- Highcharts 百分比堆叠区域图
- Highcharts 丢失值区域图
- Highcharts 反转x轴与y轴
- Highcharts 曲线区域图
- Highcharts 区间区域图
- Highcharts 使用区间和线的区域图
- Highcharts 条形图
- Highcharts 基本条形图
- Highcharts 堆叠条形图
- Highcharts 反向条形图
- Highcharts 柱形图
- Highcharts 基本柱形图
- Highcharts 使用负值的反向柱形图
- Highcharts 堆叠柱形图
- Highcharts 堆叠组柱形图
- Highcharts 使用百分比的堆叠柱形图
- Highcharts 标签旋转柱形图
- Highcharts 堆叠组柱形图
- Highcharts 固定布局柱形图
- Highcharts 使用 HTML 表格数据的柱形图
- Highcharts 区间柱形图
- Highcharts 饼图
- Highcharts 基本饼图
- Highcharts 显示图例饼图
- Highcharts 圆环图
- Highcharts 半圈圆环图
- Highcharts 向下钻取饼图
- Highcharts 渐变饼图
- Highcharts 单色饼图
- Highcharts 散点图
- Highcharts 气泡图
- Highcharts 动态图
- Highcharts 组合图
- Highcharts 柱形图,线条图,饼图组合
- Highcharts 双Y轴, 柱形图,线条图组合
- Highcharts 多Y轴组合
- Highcharts 散点图上添加回归线
- Highcharts 3D图
- Highcharts 3D柱形图
- Highcharts 带空值(null)和0的3D柱形图
- Highcharts 堆叠3D柱形图
- Highcharts 3D饼图
- Highcharts 3D圆环图
- Highcharts 测量图
- Highcharts 测量图
- Highcharts 圆形进度条式测量图
- Highcharts 时钟
- Highcharts 双轴车速表
- Highcharts 音量表(VU Meter)
- Highcharts 树状图(Treemap)