Highcharts Demo
author(s):
Torstein Hønsi
by Ankit Patidar
HTML
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script src="https://code.highcharts.com/modules/solid-gauge.js"></script>
<div id="container" style="width: 400px; height: 400px; margin: 0 auto">
</div>
<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" viewBox="0 0 300 300">
<defs>
<filter id="glow" x="-5000%" y="-5000%" width="10000%" height="10000%">
<feFlood result="flood" flood-color="#000" flood-opacity=".2"></feFlood>
<feComposite in="flood" result="mask" in2="SourceGraphic" operator="in"></feComposite>
<feMorphology in="mask" result="dilated" operator="dilate" radius="3"></feMorphology>
<feGaussianBlur in="dilated" result="blurred" stdDeviation="5"></feGaussianBlur>
<feMerge>
<feMergeNode in="blurred"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
</defs>
</svg>
CSS
.highcharts-series-group {
filter: url(#glow)
}
JavaScript
var chartPro = Highcharts.chart('container', {
chart: {
type: 'solidgauge',
marginTop: 0
},
title: {
text: false,
style: {
fontSize: '24px'
}
},
tooltip: {
borderWidth: 0,
backgroundColor: 'none',
shadow: false,
style: {
fontSize: '16px'
},
pointFormat: '{series.name}<br><span style="font-size:2em; color: {point.color}; font-weight: bold">{point.y}%</span>',
positioner: function(labelWidth) {
return {
x: 200 - labelWidth / 2,
y: 180
};
}
},
pane: {
startAngle: 0,
endAngle: 360,
background: [{
outerRadius: '88%',
innerRadius: '88%',
backgroundColor: 'yellow',
borderWidth: 0
}]
},
plotOptions: {
solidgauge: {
animation: false,
dataLabels: {
enabled: false
},
linecap: 'round',
stickyTracking: false,
rounded: true
}
},
yAxis: {
min: 0,
max: 100,
lineWidth: 0,
tickPositions: []
},
series: [{
name: 'Something',
data: [{
color: '#e76a0b',
radius: '112%',
innerRadius: '88%',
y: 100,
borderColor: '#e76a0b'
}, {
color: '#007272',
radius: '112%',
innerRadius: '88%',
y: 80,
borderColor: '#007272'
}]
}]
});
// Bring life to the dials
var point = chartPro.series[0].points[1];
var interval = setInterval(function(){
var newVal = 0;
if(chartPro){
newVal = point.y;
console.log(newVal--);
point.update(newVal);
}
if(newVal <= 0 || newVal > 100){
clearInterval(interval);
}
}, 1000);