위토즈 - 개발자프로그램판매공간

정보공유

[PHP] GD 를 이용한 그래프 만들기 SAMPLE 2

샘플
sample.php?50;;;;-2,10,-3

[code]


<?
Header("Content-type : image/gif");


$query_string = urldecode(getenv("QUERY_STRING"));
$query_string = explode(";" , $query_string);
$data_num = intval($query_string[0]);
$data_name = explode("," , $query_string[1]);
$data_view = explode("," , $query_string[2]);
$data_click = explode("," , $query_string[3]);
$data_rate = explode(",", $query_string[4]);

$data_view_max=$data_click_max=$data_rate_max=0;
for ($i = 0; $i < $data_num; $i++)
{
if ($data_view_max < $data_view[$i])
$data_view_max = $data_view[$i];
if ($data_click_max < $data_click[$i])
$data_click_max = $data_click[$i];
if ($data_rate_max < $data_rate[$i])
$data_rate_max = $data_rate[$i];
}
$data_view_max = intval($data_view_max * 1.05);
$data_click_max = intval($data_click_max * 1.05);
$data_rate_max = $data_rate_max * 1.05;

if ($data_view_max == 0)
$data_view_max = 100;
if ($data_click_max == 0)
$data_click_max = 100;
if ($data_rate_max == 0)
$data_rate_max = 100;
$data_unit = 390 / ( $data_num + 0.5 );


for ($i=0; $i<$data_num; $i++)
{
$data_view[$i] = ( $data_view[$i] / $data_view_max ) * 170;
$data_view[$i] = 190 - $data_view[$i];
$data_view[$i] = intval($data_view[$i]);

$data_click[$i] = ( $data_click[$i] / $data_view_max ) * 170;
$data_click[$i] = 190 - $data_click[$i];
$data_click[$i] = intval($data_click[$i]);

$data_rate[$i] = ( $data_rate[$i] / $data_rate_max ) * 170;
$data_rate[$i] = 190 - $data_rate[$i];
$data_rate[$i] = intval($data_rate[$i]);
}



$image = ImageCreate(480,256);

$white = ImageColorAllocate($image , 255,255,255);
$gray = ImageColorAllocate($image , 192,192,192);
$black = ImageColorAllocate($image , 0,0,0);
$blue = ImageColorAllocate($image , 0,0,255);
$red = ImageColorAllocate($image , 255,0,0);
$green = ImageColorAllocate($image, 33, 99 , 99);
$dark_green = ImageColorAllocate($image, 20 , 65 , 65);
$dark_gray = ImageColorAllocate($image , 132,132,132);

ImageFilledRectangle($image , 60,20,450,190, $gray);
ImageRectangle($image , 0,0,479,255,$black);
ImageLine($image , 60,20,60,190, $black);
ImageLine($image , 61,20,61,190, $black);
ImageLine($image , 60,190,450,190, $black);
ImageLine($image , 60,189,450,189, $black);
ImageDashedLine($image , 61,105,450,105, $dark_gray);
ImageDashedLine($image , 61,62 ,450,62 , $dark_gray);
ImageDashedLine($image , 61,147,450,147, $dark_gray);
ImageDashedLine($image , 61,20 ,450,20, $dark_gray);
for ($i = 0 ; $i < $data_num; $i++)
{
$center_x = intval( 60 + $data_unit * ($i + 1));
$gap = intval($data_unit * 0.4);
imageStringUp($image , 2 , $center_x - 7 , 250 , $data_name[$i] , $black);
ImageLine($image , $center_x , 187 , $center_x , 189, $black);
//changed.. next line..
ImageFilledRectangle($image , $center_x - $gap , $data_view[$i] , $center_x + $gap , 190 , $green);
ImageFilledRectangle($image , $center_x - $gap , $data_click[$i] , $center_x + $gap , 190 , $dark_green);
}

for ($i = 0 ; $i < $data_num; $i++)
{
$center_x = 60 + $data_unit * ($i + 1);
if ($i != ($data_num - 1)) //if there is real data
ImageLine($image , $center_x , $data_rate[$i] , intval($center_x + $data_unit) , $data_rate[$i+1] , $black);
}

ImageString($image , 2, 10 , 15 , $data_view_max , $black);
ImageString($image , 2, 14 , 24 , "(".$data_rate_max."%)" , $black);
$data_view_half = $data_view_max / 2;
$data_rate_half = $data_rate_max / 2;
ImageString($image , 2, 10 , 100 ,$data_view_half, $black);
ImageString($image , 2, 14 , 109 ,"(".$data_rate_half."%)" , $black);

ImageString($image , 2 ,50 , 185 , "0" , $black);
ImageLine($image , 60 , 20 , 63 , 20 , $black);
ImageLine($image , 60 , 105 , 63 , 105 , $black);

ImageGif($image);
ImageDestroy($image);

?>


[/code]
정보공유
Total 443건 29 페이지
번호 제목 글쓴이 날짜 조회
23 정규식 참고 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-27 32649
22 메일주소 정규식 체크 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-25 33119
21 유니크 한 일련번호 생성하기. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-17 35853
20 원하는 자릿수 만큼 문자열 생성처리 함수. sprintf 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-11 31661
19 jQuery blockUI plugin 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-08 34663
18 div 기본 레이아웃 샘플 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-05 35227
17 phpMyAdmin 접속이 localhost 가 아닐경우. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-03 39467
16 데이터 순서도 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-03 39398
15 영카트 장바구니키 세션을 쿠키로 변경 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-02 39178
14 Simple Microphone Recorder 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-26 33275
13 즐겨쓰는 php db 연결문 (접속 - 해제) 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-24 36580
12 달력 함수. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-24 31973
11 datepicker 예제 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-24 45717
10 MYSQL 1~100까지 랜덤 숫자값 SELECT 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 41603
열람중 GD 를 이용한 그래프 만들기 SAMPLE 2 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 31940