Google Chart排在图表外部

时间:2017-02-09 11:32:48

标签: javascript charts google-visualization google-chartwrapper

我使用Google Chart制作图表。为什么我的线条不在图表之外呢? 在这里看到一个JS小提琴问题:https://jsfiddle.net/n75fuh6w/

我能解决这个问题,还是Google图表的工作原理?非常感谢。

No code is needed here Stackoverflow

1 个答案:

答案 0 :(得分:1)

图表外的vAxis被锁定在仅限第一个系列

范围内的结果

当有多个系列数据时,需要才能找到所有系列的minmax

我们可以使用Math.min& max为每个

找到
// use null instead of zero (min could be greater than zero and wouldn't be found)
var rangeMin = null;
var rangeMax = null;

// start with column 1 (exclude x axis)
for (var i = 1; i < data.getNumberOfColumns(); i++) {
  if (data.getColumnType(i) === 'number') {
    var range = data.getColumnRange(i);
    if (rangeMin === null) {
      rangeMin = range.min;
    } else {
      rangeMin = Math.min(rangeMin, range.min);
    }
    if (rangeMax === null) {
      rangeMax = range.max;
    } else {
      rangeMax = Math.max(rangeMax, range.max);
    }
  }
}

然后在选项中,+ / - 1表示安全性

  viewWindow: {
    min: rangeMin - 1,
    max: rangeMax + 1
  }

请参阅以下工作代码段...

&#13;
&#13;
Date.prototype.minDays = function(days) {
  var dat = new Date(this.valueOf());
  dat.setDate(dat.getDate() - days);
  return dat;
}
var date = new Date();

google.charts.load('current', {
  callback: drawChart,
  packages: ['corechart']
});

function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('datetime', 'Date');
  data.addColumn('number', 'Test1');
  data.addColumn('number', 'Test2');
  data.addColumn('number', 'Test3');
  data.addColumn('number', 'Test4');
  data.addColumn('number', 'Test5');
  data.addColumn('number', 'Test6');
  data.addColumn('number', 'Test7');
  data.addColumn('number', 'Test8');
  data.addColumn('number', 'Test9');
  data.addColumn('number', 'Test10');
  data.addColumn('number', 'Test11');
  data.addColumn('number', 'Test12');
  data.addRows([
    [new Date(2017, 1, 08), 1,  8, 1, 36, 7,  9,  12, 45, 20, 30, 45, 8],
    [new Date(2017, 1, 07), 12, 9, 5, 8,  10, 21, 34, 87, 89, 45, 12, 9],
  ]);

  // set range
  var rangeMin = null;
  var rangeMax = null;
  for (var i = 1; i < data.getNumberOfColumns(); i++) {
    if (data.getColumnType(i) === 'number') {
      var range = data.getColumnRange(i);
      if (rangeMin === null) {
        rangeMin = range.min;
      } else {
        rangeMin = Math.min(rangeMin, range.min);
      }
      if (rangeMax === null) {
        rangeMax = range.max;
      } else {
        rangeMax = Math.max(rangeMax, range.max);
      }
    }
  }

  var options = {
    chartArea: {'width': '100%'},
    animation: {
      duration: 1000,
      easing: 'in'
    },
    hAxis: {
      gridlines: {
      color: '#cfd1d8',
      },
      titleTextStyle: {
      color: '#3e4763',
      },
      viewWindowMode: 'explicit',
      viewWindow: {
      min: new Date(date.minDays(7)),
      max: new Date(Date.now()),
      },
    },
    vAxis: {
      gridlines: {
      count: 10,
      },
      viewWindow: {
        min: rangeMin - 1,
        max: rangeMax + 1
      }
    },
    explorer: {
      axis: 'horizontal',
      keepInBounds: false,
      maxZoomIn: 4.0
    },
    lineWidth: 3,
    pointSize: 8,
    series: {
      0: { color: '#003eff' },
      1: { color: '#118d26' },
      2: { color: '#ff00de' },
      3: { color: '#ff4fc3' },
      4: { color: '#ff0000' },
      5: { color: '#00c9cb' },
      6: { color: '#e5a200' },
      7: { color: '#00d975' },
      8: { color: '#a55f3d' },
      9: { color: '#783dc8' },
      10: { color: '#829100' },
      11: { color: '#945401' },
      },
    backgroundColor: '#f7f9f9',
    legend: { position: 'none' },
  };
  var chart = new google.visualization.LineChart(document.getElementById('chart'));
  chart.draw(data, options);
}
&#13;
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>
&#13;
&#13;
&#13;