공룡호가 사는 세상 이야기

안녕하세요.
phpschool 에서 나이별로 막대그래프를 생성하는 방법을 검색하던 중 딱 입맛에 맞는 글이 없어서 나름 고민해서 나온 방법입니다.
이미 알고 계신 정보일 수도 있고 허접한 정보이지만 차트를 만드는데 조금이나마 도움이 되면 좋겠습니다.

그래프는 Open Flash Chart 를 사용하였습니다.
Open Flash Chart 에 대해서는 다음의 사이트를 참고하여서 보시는 게 설명보다는 나을 듯 하여서 생략합니다.
http://teethgrinder.co.uk/open-flash-chart-2/

생일 데이터가 0000-00-00 식으로 들어가 있다고 가정합니다.

Open Flash Chart 에 들어갈 데이터 파일은 다음과 같이 만듭니다.
====================
$rangeQry = "SELECT count( * ) as range_count, ( ";
$rangeQry .= " CASE WHEN a.age <10 THEN '00' ";
$rangeQry .= " WHEN a.age >=10 AND a.age <20 THEN '10' WHEN a.age >=20 AND a.age <30 THEN '20' ";
$rangeQry .= " WHEN a.age >=30 AND a.age <40 THEN '30' WHEN a.age >=40 AND a.age <50 THEN '40' ";
$rangeQry .= " WHEN a.age >=50 AND a.age <60 THEN '50' WHEN a.age >=60 AND a.age <70 THEN '60' ";
$rangeQry .= " WHEN a.age >=70 THEN '70' END ) AS age_range ";
$rangeQry .= " FROM ( ";
$rangeQry .= " SELECT num, date_format( now( ) , '%Y-%m-%d' ) - left( birth, 4 ) AS age FROM christ_basic_info ";
$rangeQry .= " )a GROUP BY age_range ORDER BY age_range ";
=====================
요로코롬 하시면 10대 미만 몇명, 10대 몇명...이런식으로 결과가 나옵니다.
$bar_values = array();
while($rangeRes = mysql_fetch_array($rangeSql)){
$rangeTempData = intval($rangeRes[range_count]);
array_push($bar_values, $rangeTempData);
}
//$bar_values = array(321,749,702,608,649,505,947,365 ); -> 예제데이터
$bar = new bar_filled( '#E2D66A', '#577261' );
$bar->set_values( $bar_values );
$tags = new ofc_tags();

$tags->font("굴림체", 12)
->colour("#333333")
->align_x_center()
->text('#y# 명');

$x=0;
foreach($bar_values as $v)
{
$tags->append_tag(new ofc_tag($x, $v));
$x++;
}

$x = new x_axis();
$x_labels = new x_axis_labels();
$x_labels->set_colour( '#666666' );
$x_labels->set_size( 12 );
$x_labels->set_labels(
array( '10대미만','10대','20대','30대','40대','50대','60대','70대이상' )
);
$x->set_labels( $x_labels );

$chart = new open_flash_chart();
$chart->set_title( $title );
$chart->add_element( $bar );
$chart->add_element( $tags );
$chart->set_x_axis( $x );

$y = new y_axis();
$y->set_label_text('#val# 명');
$y->set_range( 0, 1200, 200);

$y_labels = new y_axis_labels();
$y_labels->set_colour( '#666666' );
$y_labels->set_size( 12 );
$y->set_labels( $y_labels );

$chart->set_y_axis( $y );
$chart->set_bg_colour( '#FFFFFF' );
echo $chart->toString();

---
phpschool, 바램선수님