javascript - 为 Google Charts 设置不同的范围

标签 javascript html charts google-visualization

我用过Google Developers制作4个仪表的代码。仪表具有确定仪表的最大值和最小值的属性,例如 max:20 min:0。当我创建 4 个仪表时,它们都具有相同的最大值和最小值。

我的问题很简单,是否可以为每个gauge设置不同的最大值和最小值?

这是我的代码:

<!DOCTYPE html>                                                          

<html>                                                                   
 <head>                                                                  
  <meta charset="utf-8">                                                 
  <meta name="viewport" content="width=device-width,                     
initial-scale=1">                                                        
  <meta name="viewport" content="width=device-width">                                                                                     
  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>                 
  <script type="text/javascript">                                        
    google.charts.load('current', {'packages':['gauge']});               
    google.charts.setOnLoadCallback(drawGauge);

    var gauge;
    var gaugedata;                                     
    var gaugeOptions = {min: 0, max: 20, yellowFrom: 200, yellowTo: 250, redFrom: 0, redTo: 4, greenFrom: 4 , greenTo:20 ,                   
minorTicks: 5,animation:{                                                
        duration: 400,                                                   
        startup: true,                                                   
        easing: 'inAndOut',},                                                                 
 }; 

    var gauge_text = 'Gauge';                                                                     
    function drawGauge() {  

      gaugeData = new google.visualization.DataTable();                 
      gaugeData.addColumn('number', '0');                              
      gaugeData.addColumn('number', '1');                              
      gaugeData.addColumn('number', '2');                              
      gaugeData.addColumn('number', '3');                              
      gaugeData.addRows(4);                                              
      gaugeData.setCell(0, 0, 12, gauge_text);                                        
      gaugeData.setCell(0, 1, 18, gauge_text);                                        
      gaugeData.setCell(0, 2, 6, gauge_text);                                        
      gaugeData.setCell(0, 3, 10, gauge_text);                                        

      gauge = new google.visualization.Gauge(document.getElementById('gauge_div'));        
      gauge.draw(gaugeData, gaugeOptions);                               
    }


 </script>                                                              
 </head>                                                                 
 <body>                                                                  
  <div align="center" style="border:2px solid black; width:590px;height: 500px;">                                                         

  <div align="top" id="gauge_div" style="width:590px; height:400px;"></div>                                                                 
 </body>                                                                 
</html>

我对 html 不是很熟悉,因为这段代码是 Python 项目的次要部分,所以非常感谢任何想法或帮助。

提前致谢;

安德。

最佳答案

您需要为每组最小/最大值绘制单独的仪表图

请参阅以下工作片段,
绘制了四种不同的仪表图,每种具有不同的范围...

google.charts.load('current', {
  packages: ['gauge']
}).then(function() {
  var gauge;
  var gaugedata;
  var gaugeOptions = {
    min: 0,
    max: 20,
    yellowFrom: 200,
    yellowTo: 250,
    redFrom: 0,
    redTo: 4,
    greenFrom: 4,
    greenTo: 20,
    minorTicks: 5,
    animation: {
      duration: 400,
      startup: true,
      easing: 'inAndOut',
    },
  };

  var gauge_text = 'Gauge';

  gaugeData = new google.visualization.DataTable();
  gaugeData.addColumn('number', '0');
  gaugeData.addColumn('number', '1');
  gaugeData.addColumn('number', '2');
  gaugeData.addColumn('number', '3');
  gaugeData.addRows(1);
  gaugeData.setCell(0, 0, 12, gauge_text);
  gaugeData.setCell(0, 1, 18, gauge_text);
  gaugeData.setCell(0, 2, 6, gauge_text);
  gaugeData.setCell(0, 3, 10, gauge_text);
  
  for (var i = 0; i < gaugeData.getNumberOfColumns(); i++) {
    drawGauge(i);
  }
  
  var gaugeView;
  function drawGauge(index) { 
    gaugeView = new google.visualization.DataView(gaugeData);
    gaugeView.setColumns([index]);
    gauge = new google.visualization.Gauge(document.getElementById('gauge_div_' + index));
    if (index > 0) {
      gaugeOptions.max = gaugeOptions.max + 20;
    }
    gauge.draw(gaugeView, gaugeOptions);
  }  
});
.wrapper {
  white-space: nowrap;
}

.gauge {
  display: inline-block;
  width: 140px;
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div class="wrapper">
  <div class="gauge" id="gauge_div_0"></div>
  <div class="gauge" id="gauge_div_1"></div>
  <div class="gauge" id="gauge_div_2"></div>
  <div class="gauge" id="gauge_div_3"></div>
</div>

关于javascript - 为 Google Charts 设置不同的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318111/

相关文章:

javascript - 为什么我的 javascript (node.js) 给了我不正确的时间戳?

javascript - AngularJS ng-model 和 ng-checked 单选按钮 slider

asp.net - silverlight 限制为 100% 浏览器高度

html - 悬停时更改图像颜色

r - 使用 R 绘制甘特图

javascript - 仅当不被加号包围时才使用 RegEx 拆分字符串以匹配&符号

javascript - 在 Heroku Node.js/Express 应用程序上禁用 HTTPS

javascript - Knockout.js 可以更改不在 viewModel 中的变量吗

d3.js - 筛选 d3 时如何突出显示分组图表的一部分

javascript - 如何完全禁用 highchart 图表