[PHP-users 27850] Re: JpGraphにおける、軸の最大値と最小値指定

TAKAGI Masahiro matakagi @ osk2.3web.ne.jp
2005年 12月 16日 (金) 02:29:53 JST


高木です。

At Wed, 14 Dec 2005 12:16:16 +0900,
naya wrote:
> 
> JpGraphの散布図で、X軸 and/or Y軸の最大値と最小値の指定で困っているので
> すが、下記の点につき、お心当たりがあったらアドバイスお願いします。まず、
> 
JpGraph そのもの自体も PHP で書かれているわけですから、マニュアルを見
てもよくわからなかった場合は JpGraph のソースコードを読んでみるとヒン
トが得られるかもしれません。

> $graph->SetScale("linlin"); // XもYも自動スケール
> $graph->SetScale("linlin",0,100); // Y最小値,Y最大値のみ指定
> $graph->SetScale("linlin",0,100,0,200); //Y最小値,Y最大値,X最小値,X最大値を指定
> 
> と指定できるようですが、これですと「Y軸は自動でX軸だけは指定」ができない
> ように見受けます。この点、日本語マニュアルにも明記なかったので、勘で
> 
> $graph->SetScale("linlin",auto,auto,0,200);
> 
> などとしてみたら、希望する動作が得られました。しかし、少し凝って次のサン
たぶん、
  $graph->SetScale("linlin","abc","abc",0,200);
とか
  $graph->SetScale("linlin","tekitou","tekitou",0,200);
でも同じような動作になるのではありませんか?

> プル(1)(2)を試すと、いずれも「最大値は最小値より大きくないといけない」と
> エラーになります。
> Graph::SetScale(): Specified Max value must be larger than the specifired Min value.
> 
jpgraph.php の 1200 行目あたりに Graph::SetScale() の定義があります。

    function SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1) {
        $this->axtype = $aAxisType;

        if( $aYMax < $aYMin || $aXMax < $aXMin )
            JpGraphError::Raise('Graph::SetScale(): Specified Max value must be larger than the specified Min value.');

        // 以下省略
    }

この部分を見れば、どのような場合にエラーが出るのかがわかります。また、
引数を省略した場合のデフォルト値もわかるので、「この値を指定すれば自動
判定になるのかな?」と推測できます。

> わたしの希望は、サンプル(1)も(2)も最小値は指定、最大値は自動判定して欲し
> いというものですが、何か誤解してますでしょうか?よろしくお願い致します。
> 
私自身 JpGraph を使い込んでいるわけでもないので断言はできないのですが、
JpGraph のソースをざっと見た限りでは「最大値・最小値のどちらか一方だけ
を自動判定する」ことはできなさそうですね。で、最大値と最小値に同じ値を
指定すれば自動判定になるのかな?

> <?php
> include ("../../JpGraph/jpgraph.php");
> include ("../../JpGraph/jpgraph_scatter.php");
> 
> # サンプル(1)
> $axis_x_min = 10;		//X最小値
> $axis_x_max = "auto";	//X最大値
  $axis_x_min > $axis_x_max となってしまうので、エラーとなります。

> # サンプル(2)
> //$axis_x_min = 1000;	//X最小値
> //$axis_x_max = "auto";	//X最大値
  こちらも、$axis_x_min > $axis_x_max となってしまうので、エラーとなり
  ます。

なぜ "auto" が 10 や 1000 より小さいとみなされるのかについては、以下を
参照ください。

  http://www.php.net/manual/ja/language.types.string.php#language.types.string.conversion

-- 
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp


PHP-users メーリングリストの案内