2

3 つの異なるシリーズを含む Google Charts の AnnotatedTimeline を使用しています。

最初のシリーズには独自のスケールがあります。2 番目と 3 番目は、同じ種類のデータを表すため、同じスケールにする必要があります。

問題は、スケールを一度に 1 つのシリーズにしか関連付けることができないことです。これが私が現在チャートを描いている方法です:

chart.draw(chartData, {scaleType: 'allmaximized', scaleColumns:[0, 1], displayExactValues: true, dateFormat: 'dd MMMM yyyy'});

このように、最初のシリーズは左側に独自のスケールがあり、これは良いことです。ただし、2 番目のスケールは 2 番目の系列の値のみを使用して計算されるため、3 番目の系列はチャート上で誤って配置されます。メソッドを次のように変更します。

chart.draw(chartData, {scaleType: 'allmaximized', scaleColumns:[0, 1, 2], displayExactValues: true, dateFormat: 'dd MMMM yyyy'});

3 番目のシリーズのグラフの中央に 3 番目のスケールを追加しますが、これは私が望むものではありません。

シリーズ 2 と 3 をグループ化して両方のスケールを同じにする方法はありますか?

4

2 に答える 2

1

あなたが今何をしようとしているのか分かります。2 つの軸のみが必要です。1 つは列 0/1 の値に対応し、もう 1 つは列 2 に対応します。この例を一緒に投げました (Google Playground に自由にコピーして貼り付けてください)。

function drawVisualization() {
  var data = new google.visualization.DataTable();
  data.addColumn('date', 'Date');
  data.addColumn('number', 'Sold Pencils');
  data.addColumn('string', 'title1');
  data.addColumn('string', 'text1');
  data.addColumn('number', 'Sold Pens');
  data.addColumn('string', 'title2');
  data.addColumn('string', 'text2');
  data.addColumn('number', 'Sold Erasers');
  data.addColumn('string', 'title3');
  data.addColumn('string', 'text3');
  data.addRows([
    [new Date(2008, 1 ,1), 30000, null, null, 40645, null, null, 100, null, null],
    [new Date(2008, 1 ,2), 14045, null, null, 20374, null, null, 120, null, null],
    [new Date(2008, 1 ,3), 55022, null, null, 50766, null, null, 70, null, null],
    [new Date(2008, 1 ,4), 75284, null, null, 14334, 'Out of Stock', 'Ran out of stock on pens at 4pm', 100, null, null],
    [new Date(2008, 1 ,5), 41476, 'Bought Pens', 'Bought 200k pens', 66467, null, null, 110, null, null],
    [new Date(2008, 1 ,6), 33322, null, null, 39463, null, null, 130, 'Eraser Boom', 'People dig erasers']
  ]);

  var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
      document.getElementById('visualization'));
  annotatedtimeline.draw(data, {'displayAnnotations': true, scaleType: 'allmaximized', scaleColumns:[0, 2]});
}

これは、左側の目盛りで列 0/1、右側の目盛りで列 2 を示しています。

于 2013-01-23T03:55:25.923 に答える
0

シリーズ 2 と 3 の両方で同じスケールを取得しますか?
唯一の方法は「ハッキング」することのようです。シリーズの最後 (または最初) に2 行の偽の値を追加することで、これを行うことができます。変数、、で
系列 2 および 3 の最大値と最小値を取得します。次に、2 行の (偽の) 値を追加します。max2max3min2min3

  row1 = last value of series 1, Max(max2, max3), Max(max2, max3)
  row2 = last value of series 1, Min(min2, min3), Min(min2, min3)

オプションscaleType:'allmaximized'も設定する必要があり、シリーズ 2 と 3 は完全に整列されます。

于 2013-11-06T09:17:18.453 に答える