# 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>
```
以上實例輸出結果為:

## 通過點擊添加數據
### 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>
```
以上實例輸出結果為:

- 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)