- 정보공유
[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]
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]