Posted on

pChartで棒グラフを描きました。

レーダーチャートに引き続き、棒グラフも描きました。

インストールはレーダーチャートと同様です。

bar_1_23_20111003114604.png


cakephp\app\controllers\pcharts_controller.php

require_once(APP. 'vendors/pChart/pChart/pData.class');
require_once(APP. 'vendors/pChart/pChart/pChart.class');
//*******************************************************************************
// モジュール名 : 棒グラフの表示
//*******************************************************************************
class PchartsController extends AppController {
var $name = 'Pcharts';
var $uses = array('Profile');
/**
* 棒グラフのサンプルを作成する
* @note
*/
function bar(){
$id = 1; // グラフ番号
$p_id = 23; // 出席番号
$gtitle = "成績表"; // グラフ名
$title_a = array("国語","数学","科学","物理","歴史","英語");	// 項目
$num_a = array(98,84,100,63,27,57);	// 各項目の値
// グラフの表示
$this->__pChartBar($id, $p_id, $gtitle, $title_a, $num_a);
}
/**
* 棒グラフの表示関数
* @note
* @param    int	$id			種別
* @param	 int	$p_id		プロフィールID
* @param	 str	$gtitle		グラフタイトル
* @param    arr    $title_a    グラフ項目タイトル
* @param    arr    $num_a    	項目毎の値(上記の項目タイトル順)
*/
function	__pChartBar($id,$p_id,$gtitle,$title_a,$num_a){
// Dataset definition
$DataSet = new pData;
// 項目毎の値を設定
$DataSet->AddPoint($num_a,"range1");
// グラフ項目タイトル設定
$DataSet->AddPoint($title_a, "Serie0");
// 全てのデータシリーズを追加する
$DataSet->AddAllSeries();
// データセットを削除する
$DataSet->RemoveSerie("Serie0");
// 横軸に使用するデータセット名を設定する
$DataSet->SetAbsciseLabelSerie("Serie0");
// データセットに名称を設定する
$DataSet->SetSerieName( "点", "range1");
// Initialise the graph
// グラフの全体サイズを設定する。
$Test = new pChart(350,230);
//デフォルトの色を変更する。
$Test->setColorPalette(0,79,129,189);
//日本語用のフォント。
$Test->setFontProperties(APP. "vendors/pChart/Fonts/ipaexg.ttf",10);
// グラフエリア
$Test->setGraphArea(50,50,320,200);
// 縦は10分割固定
$Test->setFixedScale(0, 100, 10);
// 角の丸い塗りつぶされた四角形を描画する
$Test->drawFilledRoundedRectangle(7,7,343,223,5,240,240,240);
// 角が丸い線グラフを描画する
$Test->drawRoundedRectangle(5,5,345,225,5,230,230,230);
// グラフ領域の背景色を描画する
$Test->drawGraphArea(255,255,255,TRUE);
/* Draw the scale */
// 目盛りを描画する
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,0,0,0,TRUE,0,2,TRUE);
// グリッドを描画する
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
//日本語用のフォント。
$Test->setFontProperties(APP. "vendors/pChart/Fonts/ipaexg.ttf",10);
// しきい値を描画する
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
// Draw the bar graph
// 積み上げ棒グラフを描画する
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
// 値を表示する
$Test->writeValues($DataSet->GetData(),$DataSet->GetDataDescription(),"range1");
// Finish the graph
//日本語用のフォント。
$Test->setFontProperties(APP. "vendors/pChart/Fonts/ipaexg.ttf",10);
// グラフの凡例を描画する
$Test->drawLegend(300,150,$DataSet->GetDataDescription(),255,255,255);
//日本語用のフォント。
$Test->setFontProperties(APP. "vendors/pChart/Fonts/ipaexg.ttf",10);
// グラフタイトルを表示する。
$Test->drawTitle(50,22,$gtitle,50,50,50,150);
// グラフファイル名生成
$name = TMP."graph/"."bar_".$id."_".$p_id."_".dateFormat(date("Y/m/d H:i:s"),"YmdHis").".png";
// グラフをファイルに出力する
$Test->Render($name);
// ブラウザー上に表示
header("Content-type:image/png");
echo file_get_contents( $name );
return $name;
}