회사에서 통계CMS 제작중 필요하게 되서 간단하게 PHP로 막대 그래프를 만들어봤다.
머 특별한 기술같은건 없다.
최대 최소값 정해줘서 눈금 높이 잘 나누고 그래프도 높이에 맞게 픽셀 잘 맞춰서 표현해주면 된다.
최소값 처리가 0이란 가정하에 만들어서 이부분은 나중에 추가 작업이 필요할지도 모르겠다.
<?php
/* ================================================================
* filename : gra.php
* Creator : 이창열, 2009. 02. 22
* Comment : 그래프 그리기
==================================================================*/
# 그래프 출력을 위한 데이터의 최대값및 최소값 세팅
$maxVal = 50; // 최대값 5백만
$step = 5; // 단위 5십만
$arrVal = array(25,18, 34, 46, 10, 29, 17, 38, 26, 25, 27, 39, 44, 22, 16, 43, 39, 22, 44, 18, 14, 22, 32, 45);
function showStickGraph($maxVal, $minVal, $step, $arrVal)
{
$bottomCommentHeight= 30; // 하단 설명공간 높이 픽셀값
$cntY = round($maxVal / $step); // y축 눈금개수
$unitHight = 30; // 단위 높이 픽셀값
$minVal = 0; // 최소값
$k= 10;
?>
<table cellpadding=0 cellspacing=0 border="1" >
<tr>
<!-- y축-->
<td >
<table cellpadding=0 cellspacing=0 border="1" >
<? for ($a= $maxVal; $a >= $minVal; $a -= $step){ ?>
<tr>
<td height="<?=$unitHight?>" valign="bottom" align="right">
<font size="2"><?=$a?></font>
</td>
</tr>
<?}?>
<tr>
<td height="<?=$bottomCommentHeight?>">
<font size="2">매출<br>(단위:10만)</font></td>
</tr>
</table>
</td>
<!--x축-->
<td valign="bottom">
<table cellpadding=0 cellspacing=0 border="0" >
<tr>
<? for ($i= 0; $i < 24; $i++){ ?>
<td align="center" valign="bottom">
<table cellpadding=0 cellspacing=0 border="1" >
<tr>
<td width="20" height="<?=($arrVal[$i])/$step * $unitHight ?>" bgcolor="green" valign="top" align="center">
<font size="2" color="white"><b><?=$arrVal[$i]?></b></font></td>
</tr>
<tr>
<td height="<?=$bottomCommentHeight?>" valigh="top"><font size="2"><?=($i<10)?"0$i":$i?></font></td>
</tr>
</table>
</td>
<?}?>
</tr>
</table>
</td>
</tr>
</table>
<?
}
showStickGraph($maxVal, $minVal, $step, $arrVal);
?>
'Programming > PHP' 카테고리의 다른 글
PHP 막대그래프2 (0) | 2009.08.31 |
---|---|
PHP 소수점 표시(몇번쨰 이하 버림) (0) | 2009.08.31 |
PHP 배열 함수 목록 (0) | 2009.08.31 |
PHP 파일업로드 (0) | 2009.08.31 |