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

정보공유

[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 444건 30 페이지
번호 제목 글쓴이 날짜 조회
열람중 GD 를 이용한 그래프 만들기 SAMPLE 2 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 31964
8 GD 를 이용한 그래프 만들기 SAMPLE 1 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 33179
7 테이블별 용량 확인 쿼리. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-22 31255
6 jQuery Dialog 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-10 31508
5 Minify 를 이용한 JavaScript, CSS 압축 전송 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-09 46226
4 그누보드 파일 구조도. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-04 37351
3 MySQL INDEX 인덱스 생성 확인 삭제 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-04 31266
2 관리페이지에서 게시판 그룹별로 보기. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-01 26270
1 php 를 asp 로 db연결방법 파일업로드 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-07 39390