【问题标题】:Setting a hard minimum axis value in Google Charts API在 Google Charts API 中设置硬最小轴值
【发布时间】:2026-01-31 07:55:01
【问题描述】:

我正在尝试构建一个谷歌图表来显示一些正常运行时间和停机时间百分比,堆叠。这很好用,除了一件小事——我希望图表的基线为 99.8,最大值为 100——因为停机时间通常小于 0.2,这将使图表可读。

这对我来说似乎很简单。我认为这会起作用:

var data = new google.visualization.DataTable();
data.addColumn('string', 'Date');
data.addColumn('number', 'Uptime');
data.addColumn('number', 'Downtime');
data.addRows([
  ['Dec 1, 1830',   99.875, 0.125],
  ['Dec 8, 1830',   99.675, 0.325],
  ['Dec 15, 1830',  99.975, 0.025],
  ['Dec 22, 1830',  100.0,  0.0]
]);

var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, {width: 400, height: 240, isStacked: true, vAxis: { title: "Percentage Uptime", minValue: 99.8, maxValue: 100}});

不幸的是,图表完全忽略了 vAxis 上的 minValue。根据 API,这似乎是预期的行为,但这留下了一个问题 - 我将如何实现这一点?我什至对数据进行了转换——即从所有正常运行时间值中减去 99.8,然后让图表从 0 变为 0.2,这会吐出一个看起来不错的图表,但我无法应用垂直轴的标签会说 99.8、99.85、99.9 等等 - 轴非常尽职地表示,底部为 0,顶部为 0.2,似乎也没有办法修复这个方向。任何一种解决方案都是可以接受的,我确定有一些方法可以使这项工作?

【问题讨论】:

    标签: javascript google-visualization


    【解决方案1】:

    你需要像这样设置viewWindow:

    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('number', 'Uptime');
    data.addColumn('number', 'Downtime');
    data.addRows([
     ['Dec 1, 1830',   99.875, 0.125],
      ['Dec 8, 1830',   99.675, 0.325],
      ['Dec 15, 1830',  99.975, 0.025],
      ['Dec 22, 1830',  100.0,  0.0]
    
    ]);
    
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data,
               {width: 400, 
                height: 240, 
                isStacked: true,
                vAxis: { 
                  title: "Percentage Uptime", 
                  viewWindowMode:'explicit',
                  viewWindow:{
                    max:100,
                    min:99.8
                  }
                }
                }                 
              );
    

    //为更新版本的api编辑

    【讨论】:

    • 当前使用此格式时,视口会按预期进行调整,但轴标签会偏离。如果有人对此有解决方案,请告诉我;)
    • 是的,您必须使用 Axis - 勾选并将值设置为 viewWindow 最大值
    • 我已经搜索了 2 个小时来寻找如何使用较新的 Material Design 图表使 vAxis.ticks 实际工作。他们只是忽略了minValuemaxValue 以及滴答声。将此答案与viewWindowMode 以及viewWindow 一起使用,我的图表终于可以正常工作了。上下文:CPU 使用率低,显示为 9%。如果您看到图表,它看起来很高......但如果您突然将视图更改为 100%,它的视觉效果会更逼真。
    【解决方案2】:

    我遇到了类似的问题,必须将属性指定为“min”而不是“minValue”

    vAxis: { 
        viewWindowMode:'explicit',
        viewWindow: {
            max:100,
            min:99.8
        }
    }
    

    【讨论】:

    • 很好的例子,测试的时候,确保max > min,否则不起作用。