웹마스터 팁

그래프 만드는 소스가 필요해서 여기 게시판을 뒤졌더니 zzony 님 소스가 나오더군요.
그 소스를 함수화 해서 쉽게 쓸수 있도록 고쳤습니다.
아래 소스는 폼 데이터를 전송 받아 그래프를 생성하지만
폼 데이터 대신 소스에서 생성된 데이터로 그래프를 만드는것이
직접 사용하는 방식이 될겁니다.

zzony 님 원래 글 : http://www.nzeo.com/bbs/zboard.php?id=p_study&desc=asc&no=293
소스 테스트 : http://allzza.net/my.php

수정한대로 그래프가 고쳐지지 않으면 새로고침해서 보세요


<?

$e = "./tt/test.png";

if($a)   {
    $aa = explode(",",$a);
    if($d) $dd = explode(",",$d);
    
    bar_graph($aa,$b,$c,$dd,$e);
    echo "<img src="$e">";
    }


function bar_graph($val,$x,$y,$x_val,$img_url)   { //-- 막대 그래프 만들어주는 함수
     /*
     $val : 값을 원소로 하는 배열
     $x : 그래프 가로축 크기
     $y : 그래프 세로축 크기
     $x_val : x축 값의 이름 배열
     $img_url : 저장할 파일의 경로와 이름(png)
     */
    
     $gaesu = count($val);   //-- 그래프 막대 갯수
     $makde_pok = ($x / $gaesu) / 3;   //-- 막대 하나 폭
     $real_y = $y - 40;    //-- 그래프가 그려질 실제 위치
    
     $max_value = $val[0];
     for ($i=0;$i<$gaesu;$i++)     {
         if($val[$i] > $max_value)   $max_value = $val[$i];
         }

     $im =  @ImageCreate($x,$y) or die ("이미지를 초기화 하지 못했습니다");

     $backgroundcolor=ImageColorAllocate($im,234,253,231);  //-- 그랩 바탕색
     $rectanglecolor = ImageColorAllocate($im,65,127,250); //-- 그랩 색깔
     $white=ImageColorAllocate($im,255,255,240);            //-- 그랩 바닥색

     ImageFilledRectAngle($im,0,$real_y,$x,$y,$white);    
     for ($i=0;$i<$gaesu;$i++)   {
           ($i == 0) ? $makde_x[$i] = $makde_pok: $makde_x[$i] = ($makde_x[$i - 1] + $makde_pok * 3);
           $makde_y[$i] = $real_y - ($val[$i]/$max_value) * $real_y; //-- 각각의 막대 y 좌표

           ImageFilledRectAngle($im,$makde_x[$i],$makde_y[$i],$makde_x[$i]+$makde_pok,$real_y,$rectanglecolor);          
           ($makde_y[$i] - 15 < 0) ? $y_string = 0 : $y_string = $makde_y[$i] - 15;
           Imagestring($im,5,$makde_x[$i],$y_string,$val[$i],imagecolorallocate($im,42,31,21));
           Imagestring($im,3,$makde_x[$i],$y-30,$x_val[$i],imagecolorallocate($im,42,31,21));
           }
     ImagePNG($im,$img_url);
     ImageDestroy($im);
    
     }
?>


<form name=my method=post action="<?=$PHP_SELF;?>">
값 : <input type=text size=50 name=a value="<?=$a;?>"><br>
가로 : <input type=text size=5 name=b value="<?=$b;?>"><br>
세로 : <input tpye=text size=5 name=c value="<?=$c;?>"><br>
값이름 : <input type=text size=50 name=d value="<?=$d;?>"><br>
파일 이름 : <input type=text readonly size=30 value="<?=$e;?>" name=e><br>
<input type=button value="구래푸 맹글기" onclick='this.form.submit()'>
</form>


값 : 각 그래프가 가르키는 값입니다. 콤마로 구분하고 맨뒤엔 콤마를 찍지 마세요.
     물론 각각의 값은 숫자....여야겠죠.
가로 : 그래프 가로 크기입니다.픽셀 단위.
세로 : 그래프 세로 크기. 픽셀 단위
값이름 : 그래프 밑에 각각의 막대를 값으로 가지는 이름. 역시 콤마로 구분하고 맨뒤엔 콤마 찍지 마세요.
         한글 들어가니까 글자가 깨지네요.
파일이름 : 폴더와 파일 이름을 적어주는데 폴더는 nobody 에게 쓰기 권한이 있어야 합니다.
           (이해하기 힘들면 그냥 퍼미션 **7 로 끝자린 7로 맞추심 됩니다.)
           나도 인터넷 셋방 사는 처지라서 파일 이름은 바꾸지 못하게 고정 시켜놨습니다.
           이런저런 그림파일이 계정에 생성 되면.... 내 방 좁아질까봐서리...
          
그래프의 막대 갯수는 값을 기준으로 생성 됩니다. 값이름이 갯수에 모자라면 null 로 채워지고
값이름이 갯수에서 남으면 남은 부분은 써지지 않습니다.
제목 글쓴이 날짜
서브디렉토리,파일까지 모두 삭제하는 함수. [5] Lepas 2004.08.24
Echo 여러번호출? 할때 깜빡임 없애기 [5] file 신희돈 2004.09.03
썸네일 생성시 unsharp mask활용할수 있는 팁..소스 file 앗싸~~ 곰세마리 2004.09.06
랜덤으로 파일 가져와서 재생하고, 끝나면 다른 랜덤파일 또 재생하기.. 겜방 2004.09.10
-긴급소스 수정본- winamp 방송정보 알아내기 file 이승원 2004.09.11
날씨별로 다양한 말이나 음악 보여주기[수정] [4] 로크 2004.09.13
crontab 실제 사용 예제, 온라인 웹 게임 운영하기 (팁 + 오픈 소스 게임 소개 ^^;) [1] 박용구 2004.09.14
'' -> ""로 만들기(?) [2] 플로렐라 2004.09.17
trim 과 addslashes를 일괄처리하는 함수 [7] BigStone 2004.10.02
echo 안에 더블쿼테이션을 사용하기 [15] 토토루 2004.10.05
윈도우XP 서비스팩2 사용자인지 아닌지 판별하기 [22] file 天高馬肥[쉬드] 2004.10.09
그래프 만들어주는 소스 [10] 미친개 2004.10.15
MySQL의 패턴 매칭 맛보기 [2] 손상모 2004.10.19
한글자르는 문제 PHP차원에서 해결된 건가? [5] 겜방 2004.10.20
IP to 정수변환(;) [4] 플로렐라 2004.10.21
www자동 붙히기 [8] 미오유 2004.10.22
[타키의 초보강좌]PHP 기초 강좌 제 1탄[패스워드 인증] [8] 타키 2004.10.23
소수[솟수] 쉽게 구하기[에라토스테네스의 해 알고리즘사용] , 경우의 수 구하기 [5] 타키 2004.10.23
[타키의 초보강좌]PHP 기초 강좌 제 2탄[mysql로 들어가보자.] [2] 타키 2004.10.24
나만의 미니홈 만들기 ㅡ 글쓰기에 앞서... [1] 예뜨락 2004.11.17