水平轴标签未使用 100% 宽度(Google 图表)

Horizontal axis labels are not using 100% width (Google Charts)

这是使用 one of the Google Charts demos 呈现的图表。我的实际用例和这个很像,纵轴是整数标签,横轴是字符串标签。

Fiddle: https://jsfiddle.net/1f0dvehq/

X 轴的标签似乎从 0,0 的任意距离开始。我需要那些红线和蓝线从 X=0 开始,并移动第一个 X 轴标签,使其位于 0,0 下方,如以下屏幕截图所示:

我已经尝试通过 hAxisminValue 选项传递给水平轴,但这似乎不适用于字符串,就像它对整数一样。

以下选项被传递到 fiddle 图表(同样来自演示代码):

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

如何对齐 X 轴标签,使它们占据 100% 的图表宽度,第一个标签位于 Y 轴下方? 我想完成如果可能的话,这来自图表配置本身,而不是 CSS 或无关的 JS。

如果有人也能解释一下这个设置的逻辑,我们将不胜感激。它是默认设置让我觉得很奇怪,根据我使用 google 框架的经验,它们通常会选择符合约定的默认值,但这似乎很荒谬。我希望“2004”标签在 X 轴上左对齐,X 标签之间的间隔均匀分布,“2007”与图表右边缘齐平。

无法解释原因,但这是 discrete axis 的默认行为。

如果您想在 x 轴上显示字符串,
但仍然具有连续轴的行为,
您可以使用 ticks 选项来格式化轴标签。

使用对象表示法,您可以提供每个报价单的值 (v:),
以及格式化值 (f:)...

{v: 0, f: '2004'}

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

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses'],
    [0, 1000, 400],
    [1, 1170, 460],
    [2, 660,  1120],
    [3, 1030, 540]
  ]);

  var options = {
    title: 'Company Performance',
    curveType: 'function',
    legend: {position: 'bottom'},
    hAxis: {
      ticks: [
        {v: 0, f: '2004'},
        {v: 1, f: '2005'},
        {v: 2, f: '2006'},
        {v: 3, f: '2007'}
      ]
    }
  };

  var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
  chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="curve_chart"></div>