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

정보공유

[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 74건 3 페이지
번호 제목 글쓴이 날짜 조회
44 cURL 모듈 사용가능여부 판단. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-15 30862
43 로그 기록 남기기 샘플 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-06 30792
42 배열값을 조회하고 없으면 밀어넣기. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-19 30348
41 함수, 클래스 사용가능여부 확인. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-13 30252
40 양옆 문자 제거. 양옆 문자 삭제. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-05 30137
39 Simple Microphone Recorder 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-26 29931
38 Methods with the same name as their class will not be constructors in a future version of PHP 오류. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-13 29893
37 메일주소 정규식 체크 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-25 29783
36 GD 를 이용한 그래프 만들기 SAMPLE 1 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 29754
35 정규식 참고 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-27 29533
34 2차원 배열 정렬 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-18 29475
33 URL 주소입력받을때 반드시 http 붙게 처리해야할 경우 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-06 29245
32 WGS84 두지점 간 거리 계산식. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-11 29147
31 달력 함수. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-24 28769
열람중 GD 를 이용한 그래프 만들기 SAMPLE 2 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 28614