別のY軸を追加する

広告

1つのグラフで2つ目のY軸を追加することが出来ます。この為、同じX軸の値に対して異なる範囲を持つデータを同じグラフ上に表示することが出来ます。2つ目のY軸はグラフの右側に独自の目盛りを表示します。

Y軸を追加する場合にはまず2本目のY軸の目盛の設定を行います。Graphクラスで用意されている「SetY2Scale」メソッドを使います。

Specify secondary Y scale

Parameter:
  $aAxisType  Type of scale(Default "lin")
  $aY2Min  Y2Min value(Default 1)
  $aY2Max  Y2Max value(Default 1)

グラフの目盛りを設定する「SetScale」メソッドと基本的には同じです。ただし今回はX軸の設定は関係ないのでY軸に関する設定だけを行います。詳しくは『目盛の設定』を参照して下さい。

設定可能な値は「lin」「log」「int」のいずれかです。また目盛りの最小値と最大値の設定も2番目と3番目の引数で設定できます。

実際には次のような記述となります。

$graph = new Graph(250, 200, "auto"); 

$graph->SetScale("textlin");
$graph->SetY2Scale("lin");

2本目のY軸を対象としたオブジェクトの追加

次に2本目のY軸を対象としたデータを追加するにはGraphクラスで用意されている「AddY2」メソッドを使います。

Add plot to second Y-axis

Parameter:
  &$aPlot  Plot to add to the Y2 axis

引数には追加したいLinePlotクラスのオブジェクトを指定します。

実際には次のような記述となります。

$graph = new Graph(250, 200, "auto"); 

$graph->SetScale("textlin");
$graph->SetY2Scale("lin");

$ydata1 = array(10, 4, 7, 9, 2, 3);
$ydata2 = array(5, 12, 3, 8, 5, 9);

$lineplot1 = new LinePlot($ydata1);
$lineplot2 = new LinePlot($ydata2);

$graph->Add($lineplot1);
$graph->AddY2($lineplot2);

サンプル

それでは実際に試して見ます。

sample5-1.php

<?php

include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_line.php");

$graph = new Graph(300, 200, "auto"); 
$graph->SetFrame(true);
$graph->SetScale("textlin");
$graph->SetY2Scale("lin");

$graph->yaxis->SetColor(array(255, 0, 0));
$graph->y2axis->SetColor(array(0, 0, 255));

$graph->img->SetMargin(40, 40, 30, 30);

$ydata1 = array(10, 4, 7, 9, 2, 3);
$ydata2 = array(1200, 1800, 900, 300, 1100, 500);

$lineplot1 = new LinePlot($ydata1);
$lineplot1->SetColor(array(255, 0, 0));
$lineplot2 = new LinePlot($ydata2);
$lineplot2->SetColor(array(0, 0, 255));

$graph->Add($lineplot1);
$graph->AddY2($lineplot2);

$graph->Stroke();
?>

上記のPHPファイルをブラウザで開いてみます。ブラウザには次のように表示されます。

2本目のY軸を追加

( Written by Tatsuo Ikura )