Highcharts Circular Progress Gauge
The following example demonstrates a circular progress gauge.
We have already learned the basic configuration syntax of Highcharts in previous chapters. Now, let's look at other configurations.
Configuration
chart.type Configuration
Set the chart type to 'solidgauge'. The chart.type describes the type of the chart. The default value is "line".
var chart = {
type: 'solidgauge'
};
pane Configuration
The pane is applicable only to polar charts and angular gauges. This configurable object holds the general options for combining x and y axes. Each x and y axis can be associated with a pane by its index.
var pane = {
startAngle: -150, // Starting degree of the x-axis or gauge axis, given in degrees. 0 is north.
endAngle: 150 // Ending degree of the x-axis or angular axis, given in degrees. 0 is north.
};
Example
Filename: highcharts_guage_solid.htm
<html>
<head>
<meta charset="UTF-8" />
<title>Highcharts Tutorial | tutorialpro.org(tutorialpro.org)</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/highcharts-more.js"></script>
<script src="http://code.highcharts.com/modules/solid-gauge.js"></script>
</head>
<body>
<div style="width: 600px; height: 400px; margin: 0 auto">
<div id="container-speed" style="width: 300px; height: 200px; float: left"></div>
<div id="container-rpm" style="width: 300px; height: 200px; float: left"></div>
</div>
<script language="JavaScript">
$(document).ready(function() {
var chart = {
type: 'solidgauge'
};
var title = null;
var pane = {
center: ['50%', '85%'],
size: '140%',
startAngle: -90,
endAngle: 90,
background: {
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || '#EEE',
innerRadius: '60%',
outerRadius: '100%',
shape: 'arc'
}
};
var tooltip = {
enabled: false
};
// the value axis
var yAxis = {
stops: [
[0.1, '#55BF3B'], // green
[0.5, '#DDDF0D'], // yellow
[0.9, '#DF5353'] // red
],
lineWidth: 0,
minorTickInterval: null,
tickPixelInterval: 400,
tickWidth: 0,
title: {
y: -70
},
labels: {
y: 16
},
min: 0,
max: 200,
title: {
text: 'Speed'
}
};
var plotOptions = {
solidgauge: {
dataLabels: {
y: 5,
borderWidth: 0,
useHTML: true
}
}
};
var credits = {
enabled: false
};
var series = [{
name: 'Speed',
data: [80],
dataLabels: {
format: '<div style="text-align:center"><span style="font-size:25px;color:' +
((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}</span><br/>' +
'<span style="font-size:12px;color:silver">km/h</span></div>'
},
tooltip: {
valueSuffix: ' km/h'
}
}];
var json = {};
json.chart = chart;
json.title = title;
json.pane = pane;
json.tooltip = tooltip;
json.yAxis = yAxis;
json.credits = credits;
json.series = series;
$('#container-speed').highcharts(json);
// the value axis
yAxis = {
stops: [
[0.1, '#55BF3B'], // green
[0.5, '#DDDF0D'], // yellow
[0.9, '#DF5353'] // red
],
lineWidth: 0,
minorTickInterval: null,
tickPixelInterval: 400,
tickWidth: 0,
title: {
y: -70
},
labels: {
y: 16
},
min: 0,
max: 5,
title: {
text: 'RPM'
}
};
series = [{
name: 'RPM',
data: [1],
dataLabels: {
format: '<div style="text-align:center"><span style="font-size:25px;color:' +
((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y:.1f}</span><br/>' +
'<span style="font-size:12px;color:silver">* 1000 / min</span></div>'
},
tooltip: {
valueSuffix: ' revolutions/min'
}
}];
json.yAxis = yAxis;
json.series = series;
$('#container-rpm').highcharts(json);
var chartFunction = function() {
// Speed
var chart = $('#container-speed').highcharts();
var point;
var newVal;
var inc;
if (chart) {
point = chart.series[0].points[0];
inc = Math.round((Math.random() - 0.5) * 100);
newVal = point.y + inc;
if (newVal < 0 || newVal > 200) {
newVal = point.y - inc;
}
point.update(newVal);
}
// RPM
chart = $('#container-rpm').highcharts();
if (chart) {
point = chart.series[0].points[0];
inc = Math.random() - 0.5;
newVal = point.y + inc;
if (newVal < 0 || newVal > 5) {
newVal = point.y - inc;
}
point.update(newVal);
}
};
// Bring life to the dials
setInterval(chartFunction, 2000);
});
</script>
</body>
</html>
The above example outputs the following result: