我有一个谷歌组合图表,我在其中使用两个 y 轴。
目前,每个轴的基线处于不同的水平。
我希望确保每个轴的基线处于同一水平。
我目前用来显示我的图表的代码如下所示:
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script>
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'Sales');
data.addColumn('number', 'Total PnL');
data.addColumn('number', 'Total Margin');
data.addRows([ [6.5,150.6,0.6604],
[7.0,-275,-1],
[7.5,-128.45000,-0.30368],
[8.0,345.5,0.63904761],
[8.5,-316.56000,-0.07868],
[9.0,-118.26000,-0.09587],
[9.5,-899.0699,-0.236790],
[10.0,-242.6800,-0.40805],
[10.5,28.1700,0.00786] ]);
var options = {
title: 'Graph 1',
tooltip: {textStyle: {fontSize:14}},
titleTextStyle:{fontSize:12},
hAxis: {title: 'time', titleTextStyle: {color: 'red',fontSize:15}, textStyle: {fontSize:11,fontStyle:'bold'}},
legend: {maxLines:5,textStyle: {fontSize: 11.5}},
seriesType: "bars",
series: {
0: {type: "bar",targetAxisIndex:0,color:'#000000'},
1: {type: "line",targetAxisIndex:1,color:'#333333'},
},
vAxes:{
0:{title:'PnL',titleTextStyle: {fontSize:14},textStyle:{color: 'blue',fontSize:15},format:'£###,###,###'},
1:{title:'Margin',titleTextStyle: {fontSize:14},textStyle:{color: 'red',fontSize:15},format:'#.###%'}
}
};
var chart = new google.visualization.ComboChart(document.getElementById('graphdiv'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id='graphdiv' style='width: 900px; height: 500px;'></div>
</body>
</html>
我知道与此问题相关的有关 stackoverflow 的以下两个问题:
在我看来,其中第一个专门处理预先知道数据的情况。查看实现它所需的 javascript 的一些指示也很有用。
第二个提供了一些有用的 javascript,但它似乎无法处理第二个系列包含负值的数据系列,就像我的数据集一样。
我知道这两个答案中最重要的组成部分是利用每个 vAxes 的 minValue 和 maxValue 属性。更改这些可用于覆盖 Google Charts 通常决定每个轴的基线的方式(通常它通过纯粹查看每个轴的数据本身的最小值和最大值来做到这一点)。