javascript - 如何在 block 中间移动 vAxis 值

标签 javascript charts google-visualization

我在这里有我的 googleCombot 图表,我希望我的 vAxis(垂直轴 [0,1,2,3,4,5,6])值位于 block 的中间,而不是位于线上。 我怎样才能实现它并让我的值(value)观在范围内?

这就是想要达到的结果 google Combo graph

这是我的 fiddle

function drawChart () {
    var data = new google.visualization.DataTable();
    data.addColumn('number', 'x');
    data.addColumn('number', 'y');
    data.addColumn('number', 'color band 1');
    data.addColumn('number', 'color band 2');
    data.addColumn('number', 'color band 3');
    data.addColumn('number', 'color band 4');
    data.addColumn('number', 'color band 5');
    
    var vticks = [];
    var weight = [1,3,2,7,4,6];
    var hticks = [];
    var i;
    for(var i = 0; i< weight.length; i++){ 
      hticks.push(i+1);
    }
    var vticksMin = vticks[0];
    var vticksMax = vticks[vticks.length - 1];
    var br = 1, by = 1, ty = 1, tr = 1, mg = 3;
    for (i = 0; i < 7; i++){
      vticks.push(i);
    }
	
    for (var i = 1; i < weight.length+1; i++) {
    
        data.addRow([i, parseInt(weight[i-1]), br, by,mg,ty,tr]);
    }

	var view = new google.visualization.DataView(data);
	view.setColumns([0,1, {
		type: 'string',
		role: 'annotation',
		calc: function (dt, row) {
			return dt.getValue(row, 1).toString();
		}
	}, 2, 3,4, 5,6]);
    
    var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
    
    chart.draw(view, {
        height: 700,
        width: 900,
        isStacked: true,
        hAxis: {
	            ticks: hticks
        },
        vAxis: {
	            viewWindow: {
	                min: vticksMin,
	                max: vticksMax
	            },
	            ticks: vticks
        },
        series: {
            0: {
                type: 'line',
    			color: '#000'
            },
            1: {
    			areaOpacity: 0.75,
    			color: '#E91818',
                lineWidth: 0,
                type: 'area',
                visibleInLegend: false,
                enableInteractivity: false
            },
            2: {
    			areaOpacity: 0.7,
    			color: '#FFD91E',
                lineWidth: 0,
                type: 'area',
                visibleInLegend: false,
                enableInteractivity: false
            },
            3: {
    			areaOpacity: 0.7,
    			color: '#00D717',
                lineWidth: 0,
                type: 'area',
                visibleInLegend: false,
                enableInteractivity: false
            },
            4: {
    			areaOpacity: 0.7,
    			color: '#FFD91E',
                lineWidth: 0,
                type: 'area',
                visibleInLegend: false,
                enableInteractivity: false
            },
            5: {
    			areaOpacity: 0.75,
    			color: '#E91818',
                lineWidth: 0,
                type: 'area',
                visibleInLegend: false,
                enableInteractivity: false
            }
        }
    });
}


google.load('visualization', '1', {packages: ['corechart'], callback: drawChart});
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<div id="chart_div"></div>
<div id="creativeCommons" style="text-align: center; width: 400px;">
    <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/InteractiveResource" property="dct:title" rel="dct:type">Code to add colored horizontal bands as a chart background</span> by <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Jonathan Ngbonga</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.
</div>

最佳答案

将主要网格线的颜色设置为透明...

gridlines: {
    color: 'transparent',
},

并在每个主要网格之间添加 1 条次要网格线...

minorGridlines: {
    color: 'black',
    count: 1
},

请参阅以下工作片段...

function drawChart () {
  var data = new google.visualization.DataTable();
  data.addColumn('number', 'x');
  data.addColumn('number', 'y');
  data.addColumn('number', 'color band 1');
  data.addColumn('number', 'color band 2');
  data.addColumn('number', 'color band 3');
  data.addColumn('number', 'color band 4');
  data.addColumn('number', 'color band 5');

  var vticks = [];
  var weight = [1,3,2,7,4,6];
  var hticks = [];
  var i;
  for(var i = 0; i< weight.length; i++){
    hticks.push(i+1);
  }
  var br = 1, by = 1, ty = 1, tr = 1, mg = 3;
  for (i = 0; i < 7; i++){
    vticks.push(i);
  }
  var vticksMin = vticks[0];
  var vticksMax = vticks[vticks.length - 1];

  for (var i = 1; i < weight.length+1; i++) {
    data.addRow([i, parseInt(weight[i-1]), br, by,mg,ty,tr]);
  }

  var view = new google.visualization.DataView(data);
  view.setColumns([0,1, {
    type: 'string',
    role: 'annotation',
    calc: function (dt, row) {
      return dt.getValue(row, 1).toString();
    }
  }, 2, 3,4, 5,6]);

  var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));

  chart.draw(view, {
    height: 700,
    width: 900,
    isStacked: true,
    hAxis: {
      ticks: hticks
    },
    vAxis: {
      minorGridlines: {
        color: 'black',
        count: 1
      },
      gridlines: {
        color: 'transparent',
      },
      viewWindow: {
        min: vticksMin,
        max: vticksMax
      },
      ticks: vticks
    },
    series: {
      0: {
        type: 'line',
        color: '#000'
      },
      1: {
        areaOpacity: 0.75,
        color: '#E91818',
        lineWidth: 0,
        type: 'area',
        visibleInLegend: false,
        enableInteractivity: false
      },
      2: {
        areaOpacity: 0.7,
        color: '#FFD91E',
        lineWidth: 0,
        type: 'area',
        visibleInLegend: false,
        enableInteractivity: false
      },
      3: {
        areaOpacity: 0.7,
        color: '#00D717',
        lineWidth: 0,
        type: 'area',
        visibleInLegend: false,
        enableInteractivity: false
      },
      4: {
        areaOpacity: 0.7,
        color: '#FFD91E',
        lineWidth: 0,
        type: 'area',
        visibleInLegend: false,
        enableInteractivity: false
      },
      5: {
        areaOpacity: 0.75,
        color: '#E91818',
        lineWidth: 0,
        type: 'area',
        visibleInLegend: false,
        enableInteractivity: false
      }
    }
  });
}
google.load('visualization', '1', {packages: ['corechart'], callback: drawChart});
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<div id="chart_div"></div>
<div id="creativeCommons" style="text-align: center; width: 400px;">
    <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/InteractiveResource" property="dct:title" rel="dct:type">Code to add colored horizontal bands as a chart background</span> by <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Jonathan Ngbonga</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.
</div>

注意:需要移动vticksMinvticksMax的行

在加载 vticks 之前,他们正在使用 vticks...

关于javascript - 如何在 block 中间移动 vAxis 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564029/

相关文章:

javascript - 图像预加载器回调在所有图像加载完成之前触发

javascript - NodeJS - 记录到 Windows 事件日志?

PHP 或 Python 在计算后创建网络图表?

c# - 在 C# 的 VS2010 中从数据库动态绑定(bind)图表

javascript - 在 WordPress 中使用 wp_editor 时,序列化仅在第二次提交时返回完整表单

javascript - 获取 promise 数组中的值

excel - 如何设置图表的宽度和高度(以像素为单位)?

javascript - 使用一些图表库的javascript中的ECG曲线

javascript - 自定义 Google 可视化表中的排序列

javascript - 谷歌图表错误: Data column cannot be of type string