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

정보공유

[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건 5 페이지
번호 제목 글쓴이 날짜 조회
14 cURL을 이용한 웹페이지 가져오기 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-20 34989
13 2차원 배열 정렬 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-18 29048
12 cURL 모듈 사용가능여부 판단. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-15 30465
11 정규식 참고 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-27 29141
10 메일주소 정규식 체크 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-25 29356
9 유니크 한 일련번호 생성하기. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-17 32161
8 원하는 자릿수 만큼 문자열 생성처리 함수. sprintf 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-11 28127
7 Simple Microphone Recorder 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-26 29529
6 즐겨쓰는 php db 연결문 (접속 - 해제) 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-24 31600
5 달력 함수. 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-24 28400
열람중 GD 를 이용한 그래프 만들기 SAMPLE 2 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 28166
3 GD 를 이용한 그래프 만들기 SAMPLE 1 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 29307
2 Minify 를 이용한 JavaScript, CSS 압축 전송 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 01-09 40605
1 php 를 asp 로 db연결방법 파일업로드 최고관리자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-07 35641