1
// ************************************************************** // * 折れ線グラフのサンプルです。 // * 基本的に、二つのエリアをセットで表示するように設計されて // * いるようなので、必要に応じて組み合わせます。 // * // * フォントは、GD に依存していますので、ファイルを指定できます // * ( UTF-8 文字列で渡す必要があります ) // * ※ このソースは SHIFT_JIS です // ************************************************************** $sep = substr( strtoupper( php_uname("s") ), 0, 7 ) == 'WINDOWS' ? ";" : ":"; set_include_path( ".$sep../PEAR" ); require_once 'Image/Graph.php'; // (1) キャンバス作成 $param = array(array('width' => 400, 'height' => 400, 'canvas' => 'png')); $Graph =& Image_Graph::factory('graph', $param); // フリー日本語フォント // PEAR/Image/Canvas/Fonts/fontmap.txt で相対パス指定可能 // ( 例 : elenat,../../../php/elenat.ttf ) // 直接指定ならばパスを指定する // ( 例 : $Graph->addNew('font', '../../temp/elenat') ) // ( 例 : $Graph->addNew('font', 'C:\\TEMP\\elenat') ) // ( 例 : カレントに置いて、$Graph->addNew('font', 'elenat') ) // (2) フォントオブジェクトを作成 $Font =& $Graph->addNew('font', '../font/mikachan'); // (3) キャンバスにフォントを適用 $Graph->setFont($Font); // (4) タイトルとデータをプロットするエリアを作成する $img_text = mb_convert_encoding('日本語でのサンプルです',"UTF-8","SJIS"); $Graph->add( Image_Graph::vertical( // タイトルエリア( 上 ) Image_Graph::factory('title', array($img_text, 18)), // グラフ関連エリア( 下 ) Image_Graph::vertical( // グラフエリア( 上 ) $Plotarea1 = Image_Graph::factory('plotarea'), // 凡例エリア( 下 ) $Legend = Image_Graph::factory('legend'), 90 // グラフの占める縦のパーセンテージ ), 20 // タイトルが占める縦のパーセンテージ ) ); // (5) データと凡例を関係付ける $Legend->setPlotarea($Plotarea1); // (6)プロットするデータを作成( セット1 ) $Dataset1 =& Image_Graph::factory('dataset'); $Dataset1->addPoint('a', 19); $Dataset1->addPoint('b', 12); $Dataset1->addPoint('c', 16); $Dataset1->addPoint('d', 7); $Dataset1->addPoint('e', 21); $Dataset1->addPoint('f', 14); $Dataset1->addPoint('g', 16); // (7) 凡例 $img_text = mb_convert_encoding('Aタイプ',"UTF-8","SJIS"); $Dataset1->setName($img_text); // (8) エリアにラインとして描画 $Plot1 =& $Plotarea1->addNew('line', array(&$Dataset1)); $Plot1->setLineColor('red'); // (9) プロットするデータを作成( セット2 ) $Dataset2 =& Image_Graph::factory('dataset'); $Dataset2->addPoint('a', -3); $Dataset2->addPoint('b', 10); $Dataset2->addPoint('c', 12); $Dataset2->addPoint('d', 10); $Dataset2->addPoint('e', 15); $Dataset2->addPoint('f', 16); $Dataset2->addPoint('g', 20); // (10) 凡例 $img_text = mb_convert_encoding('Bタイプ',"UTF-8","SJIS"); $Dataset2->setName($img_text); // (11) エリアにラインとして描画 $Plot2 =& $Plotarea1->addNew('line', array(&$Dataset2)); $Plot2->setLineColor('blue'); // (12) 軸の終点に矢印を描画 $AxisY1 =& $Plotarea1->getAxis('y'); $AxisY1->showArrow(); $AxisX1 =& $Plotarea1->getAxis('x'); $AxisX1->showArrow(); // (13) グラフを画像として出力 $Graph->done( ); ?>
1
// ************************************************************** // * 棒グラフとスムーズライングラフのサンプルです。 // * // * フォントは、GD に依存していますので、ファイルを指定できます // * ( UTF-8 文字列で渡す必要があります ) // * ※ このソースは SHIFT_JIS です // ************************************************************** $sep = substr( strtoupper( php_uname("s") ), 0, 7 ) == 'WINDOWS' ? ";" : ":"; set_include_path( ".$sep../PEAR" ); require_once 'Image/Graph.php'; // (1) キャンバス作成 $param = array(array('width' => 400, 'height' => 400, 'canvas' => 'png')); $Graph =& Image_Graph::factory('graph', $param); // フリー日本語フォント // PEAR/Image/Canvas/Fonts/fontmap.txt で相対パス指定可能 // ( 例 : elenat,../../../php/elenat.ttf ) // 直接指定ならばパスを指定する // ( 例 : $Graph->addNew('font', '../../temp/elenat') ) // ( 例 : $Graph->addNew('font', 'C:\\TEMP\\elenat') ) // ( 例 : カレントに置いて、$Graph->addNew('font', 'elenat') ) // (2) フォントオブジェクトを作成 $Font =& $Graph->addNew('font', '../font/mikachan'); // (3) キャンバスにフォントを適用 $Graph->setFont($Font); // (4) タイトルとデータをプロットするエリアを作成する $img_text = mb_convert_encoding('データをランダムに発生',"UTF-8","SJIS"); $Graph->add( Image_Graph::vertical( // タイトルエリア( 上 ) Image_Graph::factory('title', array($img_text, 18)), // グラフ関連エリア( 下 ) Image_Graph::vertical( // グラフエリア( 上 ) $Plotarea1 = Image_Graph::factory('plotarea'), // 凡例エリア( 下 ) $Legend = Image_Graph::factory('legend'), 90 // グラフの占める縦のパーセンテージ ), 20 // タイトルが占める縦のパーセンテージ ) ); // (5) データと凡例を関係付ける $Legend->setPlotarea($Plotarea1); // (6) データをランダム発生( データ数, 最小, 最大, 0 が必要か ) $Dataset1 =& Image_Graph::factory('random', array(10, 2, 15, false)); // (7) 凡例 $img_text = mb_convert_encoding('Aタイプ',"UTF-8","SJIS"); $Dataset1->setName($img_text); // (8) エリアにラインとして描画 $Plot1 =& $Plotarea1->addNew('bar', array(&$Dataset1)); $Plot1->setLineColor('red'); // 線の部分(箱)の色 $Plot1->setLineColor('gray'); // 箱の中の色( 色@濃度 ) $Plot1->setFillColor('blue@0.2'); // (9) データをランダム発生( データ数, 最小, 最大, 0 が必要か ) $Dataset2 =& Image_Graph::factory('random', array(10, 2, 15, false)); // (10) 凡例 $img_text = mb_convert_encoding('Bタイプ',"UTF-8","SJIS"); $Dataset2->setName($img_text); // (11) エリアにラインとして描画 $Plot2 =& $Plotarea1->addNew('smooth_line', array(&$Dataset2)); $Plot2->setLineColor('blue'); // (12) 軸の終点に矢印を描画 $AxisY1 =& $Plotarea1->getAxis('y'); $AxisY1->showArrow(); $AxisX1 =& $Plotarea1->getAxis('x'); $AxisX1->showArrow(); // (13) グラフを画像として出力 $Graph->done( ); ?>
1
// ************************************************************** // * 折れ線グラフのより実用的なサンプルです。 // * データを配列で持つ事によって、プログラミングしやすくなります。 // * // * フォントは、GD に依存していますので、ファイルを指定できます // * ( UTF-8 文字列で渡す必要があります ) // * ※ このソースは SHIFT_JIS です // ************************************************************** $sep = substr( strtoupper( php_uname("s") ), 0, 7 ) == 'WINDOWS' ? ";" : ":"; set_include_path( ".$sep../PEAR" ); require_once 'Image/Graph.php'; // (1) キャンバス作成 $param = array(array('width' => 400, 'height' => 400, 'canvas' => 'png')); $Graph =& Image_Graph::factory('graph', $param); // フリー日本語フォント // PEAR/Image/Canvas/Fonts/fontmap.txt で相対パス指定可能 // ( 例 : elenat,../../../php/elenat.ttf ) // 直接指定ならばパスを指定する // ( 例 : $Graph->addNew('font', '../../temp/elenat') ) // ( 例 : $Graph->addNew('font', 'C:\\TEMP\\elenat') ) // ( 例 : カレントに置いて、$Graph->addNew('font', 'elenat') ) // (2) フォントオブジェクトを作成 $Font =& $Graph->addNew('font', '../font/mikachan'); // (3) キャンバスにフォントを適用 $Graph->setFont($Font); // (4) タイトルとデータをプロットするエリアを作成する $img_text = mb_convert_encoding('みかちゃんフォントです',"UTF-8","SJIS"); $Graph->add( Image_Graph::vertical( // タイトルエリア( 上 ) Image_Graph::factory('title', array($img_text, 18)), // グラフ関連エリア( 下 ) Image_Graph::vertical( // グラフエリア( 上 ) $Plotarea1 = Image_Graph::factory('plotarea'), // 凡例エリア( 下 ) $Legend = Image_Graph::factory('legend'), 90 // グラフの占める縦のパーセンテージ ), 20 // タイトルが占める縦のパーセンテージ ) ); // (5) データと凡例を関係付ける $Legend->setPlotarea($Plotarea1); // (6)プロットするデータを作成( 配列セット1 ) $Dataset[0] =& Image_Graph::factory('dataset'); $Dataset[0]->addPoint('a', 19); $Dataset[0]->addPoint('b', 12); $Dataset[0]->addPoint('c', 16); $Dataset[0]->addPoint('d', 7); $Dataset[0]->addPoint('e', 21); $Dataset[0]->addPoint('f', 14); $Dataset[0]->addPoint('g', 16); // (7) 凡例 $img_text = mb_convert_encoding('Aタイプ',"UTF-8","SJIS"); $Dataset[0]->setName($img_text); // (8) プロットするデータを作成( 配列セット2 ) $Dataset[1] =& Image_Graph::factory('dataset'); $Dataset[1]->addPoint('a', -3); $Dataset[1]->addPoint('b', 0); $Dataset[1]->addPoint('c', 12); $Dataset[1]->addPoint('d', 10); $Dataset[1]->addPoint('e', 15); $Dataset[1]->addPoint('f', 16); $Dataset[1]->addPoint('g', 20); // (9) 凡例 $img_text = mb_convert_encoding('Bタイプ',"UTF-8","SJIS"); $Dataset[1]->setName($img_text); // (10) エリアにラインとして描画 $Plot =& $Plotarea1->addNew('line', array($Dataset)); // (11) データ別の色指定 $FillArray =& Image_Graph::factory('Image_Graph_Line_Array'); $FillArray->addColor('blue'); $FillArray->addColor('red'); $Plot->setLineColor($FillArray); // (12) データの値を表示 $Marker =& $Plot->addNew('value_marker', IMAGE_GRAPH_VALUE_Y); $Plot->setMarker($Marker); // Yの値が 0 の場合は、プロットの値を表示しない $Plot->setDataSelector(Image_Graph::factory('Image_Graph_DataSelector_NoZeros')); // (13) 軸の終点に矢印を描画 $AxisY1 =& $Plotarea1->getAxis('y'); $AxisY1->showArrow(); // データをプロットする場合、最大・最小で表示が欠ける場合、 // 最大値と最小値より、強制的にグラフの最大値を決定する $AxisY1->forceMaximum( 25 ); $AxisY1->forceMinimum( -5 ); $AxisX1 =& $Plotarea1->getAxis('x'); $AxisX1->showArrow(); // (13) グラフを画像として出力 $Graph->done( ); ?>
1
// ************************************************************** // * 円グラフのサンプルです。 // * PEAR のバグを修正済みです // * // * フォントは、GD に依存していますので、ファイルを指定できます // * ( UTF-8 文字列で渡す必要があります ) // * ※ このソースは SHIFT_JIS です // ************************************************************** $sep = substr( strtoupper( php_uname("s") ), 0, 7 ) == 'WINDOWS' ? ";" : ":"; set_include_path( ".$sep../PEAR" ); require_once 'Image/Graph.php'; // (1) キャンバス作成 $param = array(array('width' => 400, 'height' => 400, 'canvas' => 'png')); $Graph =& Image_Graph::factory('graph', $param); // フリー日本語フォント // PEAR/Image/Canvas/Fonts/fontmap.txt で相対パス指定可能 // ( 例 : elenat,../../../php/elenat.ttf ) // 直接指定ならばパスを指定する // ( 例 : $Graph->addNew('font', '../../temp/elenat') ) // ( 例 : $Graph->addNew('font', 'C:\\TEMP\\elenat') ) // ( 例 : カレントに置いて、$Graph->addNew('font', 'elenat') ) // (2) フォントオブジェクトを作成 $Font =& $Graph->addNew('font', '../font/mikachan'); // (3) キャンバスにフォントを適用 $Graph->setFont($Font); // (4) タイトルとデータをプロットするエリアを作成する $img_text = 'ソ−スはUTF-8Nです'; $Graph->add( Image_Graph::vertical( // タイトルエリア( 上 ) Image_Graph::factory('title', array($img_text, 18)), // グラフ関連エリア( 下 ) Image_Graph::vertical( // グラフエリア( 上 ) $Plotarea1 = Image_Graph::factory('plotarea'), // 凡例エリア( 下 ) $Legend = Image_Graph::factory('legend'), 90 // グラフの占める縦のパーセンテージ ), 20 // タイトルが占める縦のパーセンテージ ) ); // (5) データと凡例を関係付ける $Legend->setPlotarea($Plotarea1); // (6) 判例のタイトルと、データをット $Dataset1 =& Image_Graph::factory('dataset'); $Dataset1->addPoint('日本語', rand(1, 10)); $Dataset1->addPoint('表示', rand(1, 10)); $Dataset1->addPoint('凡例', rand(1, 10)); $Dataset1->addPoint('の', rand(1, 10)); $Dataset1->addPoint('テスト', rand(1, 10)); // (7) データを円グラフとして描画 $Plot =& $Plotarea1->addNew('pie', array(&$Dataset1)); $Plotarea1->hideAxis(); // x、y軸を表示しない // (8) Y データの値は、トータル中のパーセンテージ $Marker =& $Plot->addNew('Image_Graph_Marker_Value', IMAGE_GRAPH_PCT_Y_TOTAL); // (9) pin-point マーカータイプ( 0 を指定すると、円周上にマーカーが置かれる ) $PointingMarker =& $Plot->addNew('Image_Graph_Marker_Pointing_Angular', array(-40, &$Marker)); // (10) マーカーを適用 $Plot->setMarker($PointingMarker); // (11) 表示フォーマット( sprintf ) $Marker->setDataPreprocessor(Image_Graph::factory('Image_Graph_DataPreprocessor_Formatted', '%0.1f%%')); // (12) $FillArray =& Image_Graph::factory('Image_Graph_Fill_Array'); $Plot->setFillStyle($FillArray); $FillArray->addNew('gradient', array(IMAGE_GRAPH_GRAD_RADIAL, 'white', 'green')); $FillArray->addNew('gradient', array(IMAGE_GRAPH_GRAD_RADIAL, 'white', 'blue')); $FillArray->addNew('gradient', array(IMAGE_GRAPH_GRAD_RADIAL, 'white', 'yellow')); $FillArray->addNew('gradient', array(IMAGE_GRAPH_GRAD_RADIAL, 'white', 'red')); $FillArray->addNew('gradient', array(IMAGE_GRAPH_GRAD_RADIAL, 'white', 'orange')); // (13) 扇間の距離 $Plot->explode(4); // (14) マーカーは値のみ表示 $PointingMarker->setLineColor(false); $Marker->setBorderColor(false); $Marker->setFillColor(false); // (15) グラフを画像として出力 $Graph->done( ); ?>