Установите минимальное значение линейного графика Google vaxis равным 0, когда все данные для диаграммы равны 0 - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь установить минимальное значение линейного графика Google vaxis равным 0, когда все данные для диаграммы равны 0. Вот код, который я использую для рисования диаграммы:

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['corechart']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses'],
          ['2004',  0,      0],
          ['2005',  0,      0],
          ['2006',  0,       0],
          ['2007',  0,      0]
        ]);

        var options = {
          title: 'Company Performance',
          curveType: 'function',
          legend: { position: 'bottom' }


        };

        var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="curve_chart" style="width: 900px; height: 500px"></div>
  </body>
</html>

И это выводhttps://i.stack.imgur.com/V5Rww.png

Я попробовал какой-нибудь код, подобный этому:

vAxis: {
                minValue:0,
                viewWindow: {
                    min: 0
                }
            }

и вот так:

vAxis: { viewWindow: { min: 0 }, viewWindowMode: "explicit" }

Но ничего из этого не работает.

1 Ответ

0 голосов
/ 07 июня 2019

странно, график, кажется, игнорирует minValue и viewWindow.min, когда все значения равны нулю.

однако мы все еще можем использовать ticks -> ticks: [0] - или - ticks: [0, 1]

см. Следующий рабочий фрагмент ...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses'],
    ['2004',  0,      0],
    ['2005',  0,      0],
    ['2006',  0,      0],
    ['2007',  0,      0]
  ]);

  var options = {
    title: 'Company Performance',
    curveType: 'function',
    legend: {
      position: 'bottom'
    }
  };

  if (zeroAxis())  {
    options.vAxis = {};
    options.vAxis.ticks = [0];
  }

  var chart = new google.visualization.LineChart(document.getElementById('chart'));
  chart.draw(data, options);

  // determine if all y-axis values are zero
  function zeroAxis() {
    var yAxisRange = {
      max: null,
      min: null
    };
    for (var i = 1; i < data.getNumberOfColumns(); i++) {
      var range = data.getColumnRange(i);
      yAxisRange.max = yAxisRange.max || range.max;
      yAxisRange.max = Math.max(yAxisRange.max, range.max);
      yAxisRange.min = yAxisRange.min || range.min;
      yAxisRange.min = Math.min(yAxisRange.min, range.min);
    }
    return ((yAxisRange.max === 0) && (yAxisRange.min === 0));
  }
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>
...