Highcharts - Gráfico de Medidor Angular

Já vimos a configuração usada para desenhar um gráfico no capítulo Highcharts Configuration Syntax .

Um exemplo de gráfico de medidor angular é fornecido abaixo.

Configurações

Vamos agora ver as configurações / etapas adicionais realizadas.

Tipo de Gráfico

Configure o tipo de gráfico a ser baseado em medidor. Defina o tipo como 'medidor'.

var chart = {
   type: 'guage'
};

painel

Este tipo se aplica apenas a gráficos polares e medidores angulares. Este objeto de configuração contém opções gerais para o conjunto de eixos X e Y combinados. Cada xAxis ou yAxis pode fazer referência ao painel por índice.

var pane = {
   startAngle: -150,
   endAngle: 150
};

Exemplo

highcharts_guage_angular.htm

<html>
   <head>
      <title>Highcharts Tutorial</title>
      <script src = "https://ajax.googleapis.com/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() {  
            var chart = {      
               type: 'gauge',
               plotBackgroundColor: null,
               plotBackgroundImage: null,
               plotBorderWidth: 0,
               plotShadow: false
            };
            var title = {
               text: 'Speedometer'   
            };     
            var pane = {
               startAngle: -150,
               endAngle: 150,
               background: [
                  {
                     backgroundColor: {
                        linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                        stops: [
                           [0, '#FFF'],
                           [1, '#333']
                        ]
                     },
                     borderWidth: 0,
                     outerRadius: '109%'
                  }, 
                  {
                     backgroundColor: {
                        linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                        stops: [
                           [0, '#333'],
                           [1, '#FFF']
                        ]
                     },
                     borderWidth: 1,
                     outerRadius: '107%'
                  }, 
                  {
                     // default background
                  }, 
                  {
                     backgroundColor: '#DDD',
                     borderWidth: 0,
                     outerRadius: '105%',
                     innerRadius: '103%'
                  }
               ]
            };
            
            // the value axis
            var yAxis = {
               min: 0,
               max: 200,

               minorTickInterval: 'auto',
               minorTickWidth: 1,
               minorTickLength: 10,
               minorTickPosition: 'inside',
               minorTickColor: '#666',

               tickPixelInterval: 30,
               tickWidth: 2,
               tickPosition: 'inside',
               tickLength: 10,
               tickColor: '#666',
               
               labels: {
                  step: 2,
                  rotation: 'auto'
               },
               title: {
                  text: 'km/h'
               },
               plotBands: [
                  {
                     from: 0,
                     to: 120,
                     color: '#55BF3B' // green
                  }, 
                  {
                     from: 120,
                     to: 160,
                     color: '#DDDF0D' // yellow
                  }, 
                  {
                     from: 160,
                     to: 200,
                     color: '#DF5353' // red
                  }
               ]
            };
            var series = [{
               name: 'Speed',
               data: [80],
               tooltip: {
                  valueSuffix: ' km/h'
               }
            }];     
            var json = {};   
            json.chart = chart; 
            json.title = title;       
            json.pane = pane; 
            json.yAxis = yAxis; 
            json.series = series;     
            
            // Add some life
            var chartFunction = function (chart) {
               if (!chart.renderer.forExport) {
                  setInterval(function () {
                     var point = chart.series[0].points[0], newVal,
                        inc = Math.round((Math.random() - 0.5) * 20);
                     newVal = point.y + inc;
                     
                     if (newVal < 0 || newVal > 200) {
                        newVal = point.y - inc;
                     }
                     point.update(newVal);
                  }, 3000);
               }
            };
            $('#container').highcharts(json,chartFunction);
         });
      </script>
   </body>
   
</html>

Resultado

Verifique o resultado.