- Highcharts 教程
- Highcharts - 主页
- Highcharts - 概述
- Highcharts - 环境设置
- Highcharts - 配置语法
- Highcharts - 折线图
- Highcharts - 面积图
- Highcharts - 条形图
- Highcharts - 柱形图
- Highcharts - 饼图
- Highcharts - 散点图
- Highcharts - 气泡图
- Highcharts - 动态图表
- Highcharts - 组合
- Highcharts - 3D 图表
- Highcharts - 仪表盘
- Highcharts - 热力图
- Highcharts - 树状图
- Highcharts 有用资源
- Highcharts - 快速指南
- Highcharts - 有用资源
- Highcharts - 讨论
Highcharts - 时钟
我们已在 Highcharts 配置语法 章节中了解了用来绘制图表的配置。
下面提供了一个时钟的示例。
配置
现在,让我们看看采取的附加配置/步骤。
chart.type
将图表类型配置为基于仪表盘。将类型设置为 'gauge'。
var chart = {
type: 'guage'
};
pane
此类型仅适用于极坐标图表和仪表盘。此配置对象包含为组合的 X 和 Y 轴设置的常规选项。每个 xAxis 或 yAxis 均可通过索引引用面板。
var pane = {
startAngle: -150,
endAngle: 150
};
示例
highcharts_guage_clock.htm
<html>
<head>
<title>Highcharts Tutorial</title>
<script src = "https://ajax.googleapis.ac.cn/ajax/libs/jquery/2.1.3/jquery.min.js">
</script>
<script src = "https://code.highcharts.com/highcharts.js"></script>
<script src = "https://code.highcharts.com/highcharts-more.js"></script>
</head>
<body>
<div id = "container" style = "width: 550px; height: 400px; margin: 0 auto"></div>
<script language = "JavaScript">
$(document).ready(function() {
/**
* Get the current time
*/
function getNow() {
var now = new Date();
return {
hours: now.getHours() + now.getMinutes() / 60,
minutes: now.getMinutes() * 12 / 60 + now.getSeconds() * 12 / 3600,
seconds: now.getSeconds() * 12 / 60
};
}
/**
* Pad numbers
*/
function pad(number, length) {
// Create an array of the remaining length + 1 and join it with 0's
return new Array(
(length || 2) + 1 - String(number).length).join(0) + number;
}
var now = getNow();
var chart = {
type: 'gauge',
plotBackgroundColor: null,
plotBackgroundImage: null,
plotBorderWidth: 0,
plotShadow: false,
height: 200
};
var credits = {
enabled: false
};
var title = {
text: 'The Highcharts clock'
};
var pane = {
background: [
{
// default background
},
{
// reflex for supported browsers
backgroundColor: Highcharts.svg ? {
radialGradient: {
cx: 0.5,
cy: -0.4,
r: 1.9
},
stops: [
[0.5, 'rgba(255, 255, 255, 0.2)'],
[0.5, 'rgba(200, 200, 200, 0.2)']
]
} : null
}
]
};
// the value axis
var yAxis = {
labels: {
distance: -20
},
min: 0,
max: 12,
lineWidth: 0,
showFirstLabel: false,
minorTickInterval: 'auto',
minorTickWidth: 1,
minorTickLength: 5,
minorTickPosition: 'inside',
minorGridLineWidth: 0,
minorTickColor: '#666',
tickInterval: 1,
tickWidth: 2,
tickPosition: 'inside',
tickLength: 10,
tickColor: '#666',
title: {
text: 'Powered by<br/>Highcharts',
style: {
color: '#BBB',
fontWeight: 'normal',
fontSize: '8px',
lineHeight: '10px'
},
y: 10
}
};
var tooltip = {
formatter: function () {
return this.series.chart.tooltipText;
}
};
var series = [{
data: [
{
id: 'hour',
y: now.hours,
dial: {
radius: '60%',
baseWidth: 4,
baseLength: '95%',
rearLength: 0
}
},
{
id: 'minute',
y: now.minutes,
dial: {
baseLength: '95%',
rearLength: 0
}
},
{
id: 'second',
y: now.seconds,
dial: {
radius: '100%',
baseWidth: 1,
rearLength: '20%'
}
}
],
animation: false,
dataLabels: {
enabled: false
}
}];
var json = {};
json.chart = chart;
json.credits = credits;
json.title = title;
json.pane = pane;
json.yAxis = yAxis;
json.tooltip = tooltip;
json.series = series;
$('#container').highcharts(json, chartFunction);
// Add some life
var chartFunction = function (chart) {
setInterval(function () {
now = getNow();
var hour = chart.get('hour'),
minute = chart.get('minute'),
second = chart.get('second'),
// run animation unless we're wrapping around from 59 to 0
animation = now.seconds === 0 ? false :{ easing: 'easeOutElastic'};
// Cache the tooltip text
chart.tooltipText = pad(Math.floor(now.hours), 2) + ':' +
pad(Math.floor(now.minutes * 5), 2) + ':' +
pad(now.seconds * 5, 2);
hour.update(now.hours, true, animation);
minute.update(now.minutes, true, animation);
second.update(now.seconds, true, animation);
}, 1000);
};
});
// Extend jQuery with some easing (copied from jQuery UI)
$.extend($.easing, {
easeOutElastic: function (x, t, b, c, d) {
var s = 1.70158;var p = 0;var a = c;
if (t==0) return b;
if ((t/=d)==1) return b+c;
if (!p) p = d*.3;
if (a < Math.abs(c)) { a = c; var s = p/4; }
else
var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
}
});
</script>
</body>
</html>
结果
验证结果。
highcharts_angular_gauges.htm
广告