Highcharts - 圆形进度条式测量图

以下是圆形进度条式测量图的示例。

我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。

配置

chart.type 配置

配置 chart 的 type 为 'solidguage' 。chart.type 描述了图表类型。默认值为 "line"。

var chart = {
   type: 'solidguage'
};

pane 配置

pane 只适用在极坐标图和角度测量仪。此可配置对象持有组合x轴和y周的常规选项。每个x轴和y轴都可以通过索引关联到窗格中。

var pane = {
  startAngle: -150,	// x轴或测量轴的开始度数,以度数的方式给出。0是北
  endAngle: 150	//x轴极坐标或角度轴的最终度数,以度数的方式给出。0是北
};

示例

文件名:highcharts_guage_solid.htm

<html>
   <head>
      <title>Highcharts 教程</title>
      <script src = "https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
      <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>
   </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>

以上图表实例的输出结果

❮ highcharts_angular_gauges.html