<?php//折れ線グラフサンプル//////////////////////////////////////
//ファイル名:jpg01-lineplot-sampleeuc.php//作成者:ma3ki
//作成日:2005.6.19
////////////////////////////////////////////////////////////
//インクルードモジュール(パスは適宜配置します)
include ("../jpgraph.php"); //jpgraph.php*1 必須
include ("../jpgraph_line.php"); //jpgraph_line.php*1 折れ線グラフの場合
//Y軸データ配列(例. 売上高 単位:ドル)
$ydata = array(1100,500,800,1200,500,2100,900,1300,500,700,1000,700);
$ydata2 = array(100,1900,1500,700,2200,1400,1800,900,2100,1300,1500,600);
//X軸データ配列(例. 月)
$datax = array("4","5","6","7","8","9","10","11","12","1","2","3");
$gJpgBrandTiming=true;
// グラフオブジェクトの生成。new GraphとSetScaleは必須
$graph = new Graph(600,400,"auto"); //グラフオブジェクトの生成()内は、グラフ画像のwidth,height,"auto"*1
$graph->SetScale("textlin",0,3000); //軸のスケール(目盛)*2
//textlin:X 軸にはテキスト スケールが、Y 軸にはリニア スケールが適用される
//,0,3000:目盛の最小値0,最大値3000(省略可)。省略時Y軸データより自動計算される
//グラフ画像の種類の選択
$fileending = "jpeg"; //画像の種類。jpeg/gif/png
$graph->img->SetImgFormat("$fileending"); //画像の種類を明示的に指定する。
//プロットエリアにバックグラウンド画像を描く
$graph->SetBackgroundImage("kamome2.jpg",BGIMG_FILLPLOT); //BGIMG_FILLPLOT:プロットエリアBGIMG_COPY/BGIMG_FILLPLOT*3
$graph->AdjBackgroundImage(0.4,-0.7,-1); //バックグラウンド画像の色を調整する。*4
//Brightness=0.4, contrast=-0.7, saturation=-1
//グラフ画像を飾る
$graph->SetShadow(); //グラフ画像(外枠)に影をつける
$graph->img->SetMargin(70,120,40,40); //グラフ画像のマージン 値はLeft,Right,Top,Bottom (Pix) の順に指定
$graph->SetMarginColor("#dcdcdc"); //グラフ画像のマージンの色
//$graph->SetColor("beige"); //プロット域の色
//X軸目盛ラベルデータ(明示的に配列定義)を描く
$graph->xaxis->SetTickLabels($datax); //目盛ラベルの値を描く
$graph->xaxis->SetColor("blue"); //目盛ラベルの色
$graph->xgrid->Show(); //X軸グリッド線を描く
//Y軸目盛、ラベルを描く(ラベル値は自動的に計算されて描かれる)
$graph->yscale->ticks->Set(500,100); //Y軸目盛マークの表示の仕方を指定する。
//(500,100):第1パラの値毎にY軸ラベルを描き、第2パラの値毎に目盛マークを描く
//$graph->yaxis->SetLabelFormat('\%d'); //Y軸目盛ラベルの値を編集する1。編集記号は、PHP sprintf()関数に同じ。
$graph->yaxis->SetLabelFormatCallback('yLabelFormat'); //Y軸目盛ラベルの値を編集する2。サブルーチンコール。*5
$graph->yaxis->SetColor("brown"); //Y軸目盛の色(目盛値、目盛マーク、Y軸線)
$graph->yaxis->SetWeight(1); //Y軸目盛の軸線の太さ(Pix)
$graph->yaxis->SetTickSide(SIDE_LEFT); //Y軸目盛マークの表示の仕方。SIDE_LEFT:縦軸線の左側に描く*6
//$graph->xaxis->HideFirstTicklabel(); //Y軸ラベルの最初の値(例では、0(ゼロ)値)を表示しない
$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#BBCCFF@0.5'); //Y軸グリッド線の間を交互に色で飾る*7
$graph->ygrid->Show(); //Y軸グリッド線を描く
$graph->yaxis->SetLabelAlign('right','top'); //Y軸ラベルの位置づけを行なう*8
$graph->yaxis->SetLabelAngle(45); //Y軸ラベルの傾きを決める。SetFontと組み合わせ使用する。*9
$graph->yaxis->SetFont(FF_ARIAL,FS_NORMAL,10); //Y軸ラベルのフォント。*9,*10
//グラフタイトルを描く
$title="平成16年度担当別・月別推移グラフ"; //グラフタイトル
$title=utf8_conv($title); //UTF-8へ変換(日本語の場合必須)*10
$graph->title->Set($title); //タイトルを設定
$graph->title->SetColor("blue"); //タイトルの色
//X軸タイトルを描く
$xtitle="月"; //X軸タイトル
$xtitle=utf8_conv($xtitle); //UTF-8へ変換(日本語の場合必須)*10
$graph->xaxis->title->Set($xtitle); //タイトルを設定
$graph->xaxis->title->SetColor("blue"); //タイトルの色
//Y軸タイトルを描く
$ytitle="ルド"; //Y軸タイトル
$ytitle=utf8_conv($ytitle); //UTF-8へ変換(日本語の場合必須)*10
$graph->yaxis->title->Set($ytitle); //タイトルを設定
$graph->yaxis->SetTitleMargin(60); //タイトルの表示位置を調整する。軸とタイトルの間を60Pix空ける。
$graph->yaxis->SetLabelMargin(10); //軸と軸ラベルの値の間を10Pix空ける。
//グラフタイトル、X軸タイトル、Y軸タイトルのフォント
$graph->title->SetFont(FF_MINCHO,FS_NORMAL,13); //グラフタイトルフォント(日本語)*10
$graph->yaxis->title->SetFont(FF_MINCHO,FS_NORMAL,11); //Y軸タイトルフォント(日本語)*10
$graph->xaxis->title->SetFont(FF_MINCHO,FS_NORMAL,11); //X軸タイトルフォント(日本語)*10
//第1パラ、第2パラはJpgraphの定義値
//凡例を定義する
//$graph->legend->Pos(0.05,0.5,"right","center");
$graph->legend->SetAbsPos(15,40,'right','top'); //凡例の表示位置。凡例ボックスのX座標,Y座標,水平位置,垂直位置。
//ここでは、右上端からの40Pix下(X座標)且つ15Pix左(Y座標)に表示
$graph->legend->SetFont(FF_MINCHO,FS_NORMAL,11); //凡例文字のフォント*10
$graph->legend->SetColor("green"); //凡例文字の色
$graph->legend->SetFillColor('lightyellow'); //凡例フレームの背景色
////////////////////////
// 折れ線グラフを生成する
$lineplot=new LinePlot($ydata); //データ1*1
$lineplot2=new LinePlot($ydata2); //データ2*1
//データ1を描く
$lineplot->SetColor("blue"); //折れ線の色
$lineplot->SetWeight(1); //折れ線の太さ(Pix)
$lineplot->mark->SetType(MARK_IMG_DIAMOND,5,0.6); //プロットマークの型(Pjgraphビルトインマーク)*11
//MARK_IMG_DIAMOND: A 3D rendered diamond
//5,0.6:マークの色とスケーリング
//$lineplot->mark->SetWidth(4); //プロットマークの幅は、Pjgraphビルトインマークの場合固定です。
//データ2を描く
$lineplot2->SetColor("red"); //折れ線の色
$lineplot2->SetWeight(2); //折れ線の太さ(Pix)
$lineplot2->mark->SetType(MARK_FILLEDCIRCLE ); //プロットマークの型。MARK_FILLEDCIRCLE :A filled circle *11
$lineplot2->mark->SetFillColor("red"); //プロットマークの色。MARK_FILLEDCIRCLEは、Jpgraphの定義値。
$lineplot2->mark->SetWidth(4); //プロットマークの幅(Pix)
//$lineplot2->value->Show(); //Y軸データポイントの値を表示する
$lineplot2->value->SetColor("darkred"); //Y軸データポイントの値の色
$lineplot2->value->SetFont(FF_FONT1,FS_BOLD); //Y軸データポイントの値のフォント *10
//$lineplot2->value->SetFormat('$ %0d'); //Y軸データポイントの値のフォーマット編集
$lineplot2->SetWeight(1); //折れ線の太さ(Pix)
//凡例を描く
$man1=utf8_conv("松浦亜弥");
$man2=utf8_conv("小倉優子");
$lineplot->SetLegend($man1); //データ1用
$lineplot2->SetLegend($man2); //データ2用
// グラフにプロットを描く
$graph->Add($lineplot); //データ1
$graph->Add($lineplot2); //データ2
//グラフの出力・・・3つの方法があります。
// グラフを画面に表示する Display the graph------------------その1
$graph->Stroke(); //画面に表示する。<img>タグで表示可。
// グラフをファイルに保存する Display the graph--------------その2
//$fln = file_name($fileending);
//$filename = "./tmp/" . $fln;
//$graph->Stroke("$filename"); //ファイル出力
//print <<<EOD
//<html><head><title>ファイル出力</title></head>
//<body>
//<center>
//グラフファイルを出力しました・・・<br>
//<a href="$filename">>$fln</a>
//</center>
//</body></html>
//EOD;
//EOD;の行は、必ず1列目に戻します。
// グラフのダウンロード画面を表示する Display the graph------その3
//$dloadimg=$graph->Stroke(_IMG_HANDLER);
//$filename = file_name($fileending);
//$file_type = "image/$fileending";
//header("Content-Type: application/$file_type");
//header("Content-Disposition: attachment; filename=".$filename);
//header("Pragma: no-cache"); header("Expires: 0");
//ImagePNG($dloadimg);
//サブルーチン
//UTF-8変換
function utf8_conv($p){
$cd = "EUC-JP"; //mb_detect_encoding($p)を使うと結果がおかしい場合がある。
//このスクリプトのテキストエディターでの作成文字コード(EUC-JP/SJIS)に合わます。
$rp = mb_convert_encoding($p, "UTF-8", $cd);
return $rp;
}
//ファイル名作成
function file_name($f){
if($f == "jpeg"){$f="jpg";}
$fl = "jpgrapf-" . date(YmdHis) . sprintf ("%03d", rand(1,999)) . ".$f";
return $fl;
}
//Y軸ラベルフォーマット(千円単位カンマ区切り)
function yLabelFormat($aLabel) {
return "$". number_format($aLabel);
//return number_format($aLabel)
}
/////////////////////END////////////////////////
?>
|
*1:グラフオブジェクトとプロットオブジェクト
3.2 グラフ作成手順-表4 3つのグラフの作成手順参照。
*2:Y軸のスケール(目盛)
例1. $graph->SetScale("textlin",0,3000); //軸のスケール(目盛)
・"textlin":スケール定数。3.2 グラフ作成手順-*2参照。
・0:Y軸目盛の最小値(明示的に指定したい場合)
・3000:Y軸目盛の最大値(明示的に指定したい場合)
例2. $graph->SetScale("textlin"); //Y軸目盛の最小値、最大値を省略
省略の場合は、Y軸データの値により自動計算されます。
*3:バックグラウンド画像の配置
例. $graph->SetBackgroundImage("kamome2.jpg",BGIMG_FILLPLOT);
・"kamome2.jpg":画像ファイル名のパス
・BGIMG_FILLPLOT:画像の配置。
BGIMG_FILLPLOT;Adjust the size of the image to just fit the plotarea
BGIMG_FILLFRAME;ADjust the size of the image to just fit the entire graph area
BGIMG_COPY;Just copy the image as is to upper left corner
BGIMG_CENTER;Just copy the image but center it.
*4:バックグラウンド画像の色を調整する
例. $graph->AdjBackgroundImage(0.4,-0.7,-1);
第1パラメータ:Brighness (-1〜1)
第2パラメータ:Constrast (-1〜1)
第3パラメータ:Saturation (-1〜1)
*5:Y軸目盛ラベルの値を編集する(サブルーチンコール)
例.
$graph->yaxis->SetLabelFormatCallback('yLabelFormat'); //yLabelFormatは、関数名。
//Y軸ラベルフォーマット(千円単位カンマ区切り、$マークを先頭に付ける)
function yLabelFormat($aLabel) { //$aLabelは、任意の変数名。Y軸ラベル値との関係は自動的に取ってくれます。
return "$". number_format($aLabel); //return で値を返します
}
*6:Y軸目盛マークの表示の仕方
例1. $graph->yaxis->SetTickSide(SIDE_LEFT); // Y軸の場合
(縦軸の場合)
・SIDE_LEFT:軸の左に表示
・SIDE_RIGHT:軸の右に表示
(水平軸の場合)
・SIDE_TOP:軸の上に表示
・SIDE_BOTTOM:軸の下に表示
例2. $graph->xaxis->SetTickSide(SIDE_TOP); // X軸の場合
*7:Y軸グリッド線の間を交互に色で飾る
例. $graph->ygrid->SetFill(true,'#EFEFEF@0.5','#BBCCFF@0.5'); //@0.5は、50%ブレンドの意
$graph->ygrid->Show(); //Y軸グリッド線を描く
*8:Y軸ラベルの位置づけを行なう
例. $graph->yaxis->SetLabelAlign('right','top');
第1パラメータ:軸ラベルの水平方向の配置。 left/center/right
第2パラメータ:軸ラベルの垂直方向の配置。 top/center/bottom
*9:Y軸ラベルの傾きを決める
例. $graph->yaxis->SetLabelAngle(45); //パラメータは0〜90の角度。SetFontと併用します。
$graph->yaxis->SetFont(FF_ARIAL,FS_NORMAL,10); //Y軸ラベルのフォント
*10:日本語の扱いやTrueTypeフォントについて
・日本語を使用する場合は、必ずUTF-8へコード変換します。
例.
$title=utf8_conv($title); //UTF-8変換サブルーチンコール
//UTF-8変換
function utf8_conv($p){
$cd = "EUC-JP"; //mb_detect_encoding($p)を使うと結果がおかしい場合がある。
//このスクリプトのテキストエディターでの作成文字コード(EUC-JP/SJIS)に合わます。
$rp = mb_convert_encoding($p, "UTF-8", $cd);
return $rp;
}
・TrueTypeフォントの使用方法について
例.
$graph->title->SetFont(FF_MINCHO,FS_NORMAL,13); //日本語
$graph->yaxis->SetFont(FF_ARIAL,FS_NORMAL,10); //非日本語
フォントを使用する場合は、JpGraphで定義された定数FF_XXX(フォント)、FS_XXX(スタイル)を
用います。詳細は、2.1 JpGraphのインストール参照。
*11 ラインプロットマークの型
例1.$lineplot->mark->SetType(MARK_IMG_DIAMOND,5,0.6); //JpGraphビルトインマーク(内臓マーク)
第2パラメータ:色名または色番号 5:purple 。 第3パラメータ:大きさの割合。1.0 は実の大きさ。
例2.$lineplot2->mark->SetType(MARK_FILLEDCIRCLE ); //MARK_FILLEDCIRCLE(単純なマーク)
$lineplot2->mark->SetFillColor("red"); //MARK_FILLEDCIRCLEの色付け
例3.$lp5->mark->SetType(MARK_FLAG1,'sweden'); //国旗(詳細は、JpGraphのマニュアル参照)
ラインプロットマークのかたちには、the first classの単純なマークとthe second classの内臓マークがあります。
the first classは、色が自由に変えられますが、the second classは、色が決められています。
the first classの単純なマーク
MARK_SQUARE:塗り四角形
MARK_UTRIANGLE:上向きの三角形
MARK_DTRIANGLE:下向きの三角形
MARK_DIAMOND:ダイヤモンド型
MARK_CIRCLE:円形
MARK_FILLEDCIRCLE:塗り円形
MARK_CROSS:十字型
MARK_STAR:星型
MARK_X:X 文字
MARK_FLASH:フラッシュ型
MARK_IMAGE:外部ファイルを使用する場合の画像形式
MARK_FLAG:国旗 MARK_FLAG1, MARK_FLAG2,
MARK_FLAG3, MARK_FLAG4 の1つを使用
| 実例.上から順にMARK_SQUAREからMARK_FLASHに対応しています
MARK_CIRCLE,MARK_CROSS,
MARK_STAR,MARK_X,MARK_FLASH
は、色が付かない?
|
the second classのJpGraph内臓マークと規定の色
MARK_IMG_PUSHPIN, MARK_IMG_SPUSHPIN プッシュピン型画像 | red,blue,green,pink,orange |
MARK_IMG_LPUSHPIN 大サイズのプッシュピン型画像 | red,blue,green,pink,orange |
MARK_IMG_BALL, MARK_IMAGE_SBALL 丸い 3D ボール | bluegreen,cyan,darkgray,greengray, gray,graypurple,green,greenblue,lightblue, lightred,navy,orange,purple,red,yellow |
MARK_IMAGE_MBALL 中サイズの丸い 3D ボール | blue,bluegreen,brown,cyan, darkgray, greengray,gray,green, greenblue,lightblue, lightred, purple,red,white,yellow |
MARK_IMAGE_LBALL 大サイズの丸い 3D ボール | blue,lightblue,brown,darkgreen, green, purple,red,gray,yellow,silver,gray |
MARK_IMAGE_SQUARE 3D 正方形 | bluegreen,blue,green, lightblue,orange,purple,red,yellow |
MARK_IMG_STAR 3D 星型 | bluegreen,lightblue,purple,blue,green,pink,red,yellow |
MARK_IMG_DIAMOND 3D ダイヤモンド型 | lightblue,darkblue,gray, blue,pink,purple, red,yellow |
MARK_IMG_BEVEL 3D 傾斜型 | green,purple,orange,red,yellow |
実例.
上から、MARK_IMG_PUSHPIN〜MARK_IMG_BEVELに対応しています。 10個目(MARK_FLASH)は関係ありません。
MARK_IMAGE_MBAL、MARK_IMAGE_LBALL、MARK_IMAGE_SQUAREは、
マークの表示が出来ません。
これらは、すべてMARK_IMG_ にすると表示出来ます。(IMAGE→IMG バグ?)
例.
$lp4->mark->SetType(MARK_IMG_MBALL,'red'); // OK
//$lp4->mark->SetType(MARK_IMAGE_MBALL,"orange" ); // NG(表示しない)
|
|
|
|