-
-
- /**
- * php GD library generates line charts, bar charts, and pie charts
- * by bbs.it-home.org
- */
- $img_gao=170;
- $img_kuan=0;
- $jiange=30;//The abscissa between points Interval, the width of the generated image will automatically change according to the amount of incoming data
- $zuo=20;//Leave blank on the left side
- $you=20;//Leave blank on the right side
- $shang=20;//Leave it on the top Empty
- $xia=20;//Leave blank
- $zuidashujuzhi=1;
- $p_x = array();//Point abscissa
- $p_y = array();//Point ordinate
- $y_name=split( ",",$_GET["x_name"]);
- if ($_GET["a"]=="") die("error id:0");
- $shuju=split(",",$_GET ["a"]);
- //Get the maximum value on the vertical axis
- for($i=0;$i if(!is_numeric($shuju[$i])) die("error id:1");
- if($shuju[$i]>$zuidashujuzhi) $zuidashujuzhi=$shuju[$i];
- }
- //Get the image width
- $img_kuan=$zuo+$you +count($shuju)*$jiange;
- //Then create image resources
- $image = imagecreate($img_kuan,$img_gao);
- //Gray background
- $white = imagecolorallocate($image, 0xEE, 0xEE, 0xEE) ;
- //The coordinate axis is displayed in black
- $zuobiao_yanse = imagecolorallocate($image, 0x00, 0x00, 0x00);
- //The polyline is displayed in blue
- $xian_yanse = imagecolorallocate($image, 0x00, 0x00, 0xFF);
- //Draw coordinates
- //Horizontal axis
- imageline ($image, $zuo, $img_gao-$xia, $img_kuan-$you/2, $img_gao-$xia, $zuobiao_yanse);
- //Vertical axis
- imageline ( $image, $zuo, $shang/2, $zuo, $img_gao-$xia, $zuobiao_yanse);
- //Get the coordinates of each point
- for($i=0;$i array_push ($p_x, $zuo+$i*$jiange);
- array_push ($p_y, $shang+round(($img_gao-$shang-$xia)*(1-$shuju[$i] /$zuidashujuzhi)));
- }
- //Vertical axis scale
- imageline ( $image, $zuo, $shang, $zuo+6, $shang, $zuobiao_yanse);
- imagestring ( $image, 1, $zuo/ 4, $shang,$zuidashujuzhi, $zuobiao_yanse);
- imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*1/4, $zuo+6, $shang+($img_gao-$ shang-$xia)*1/4, $zuobiao_yanse);
- imagestring ( $image, 1, $zuo/4, $shang+($img_gao-$shang-$xia)*1/4,$zuidashujuzhi*3/4 , $zuobiao_yanse);
- imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*2/4, $zuo+6, $shang+($img_gao-$shang-$xia)*2 /4, $zuobiao_yanse);
- imagestring ($image, 1, $zuo/4, $shang+($img_gao-$shang-$xia)*2/4,$zuidashujuzhi*2/4, $zuobiao_yanse);
- imageline ($image, $zuo, $shang+($img_gao-$shang-$xia)*3/4, $zuo+6, $shang+($img_gao-$shang-$xia)*3/4, $zuobiao_yanse);
- imagestring ($image, 1, $zuo/4, $shang+($img_gao-$shang-$xia)*3/4,$zuidashujuzhi*1/4, $zuobiao_yanse);
- //Horizontal axis scale
- for( $i=0;$i imageline ( $image, $zuo+$i*$jiange, $img_gao-$xia, $zuo+$i*$jiange, $img_gao-$ xia-6, $zuobiao_yanse);
- imagestring ( $image, 1, $zuo+$i*$jiange-$jiange/4, $shang+($img_gao-$shang-$xia)+2,$y_name[$i] , $zuobiao_yanse);
- }
//Polyline
- $shuju_yanse_int=0;
- for($i=0;$i if( $i+1<>count($shuju)){
- imageline ( $image, $p_x[$i], $p_y[$i], $p_x[$i+1], $p_y[$i+1 ], $xian_yanse);
- imagefilledrectangle($image, $p_x[$i]-1, $p_y[$i]-1, $p_x[$i]+1, $p_y[$i]+1, $xian_yanse );
- }
- }
- //The last loop did not draw the last point effect, here we need to add
- imagefilledrectangle($image, $p_x[count($shuju)-1]-1, $p_y[count($ shuju)-1]-1, $p_x[count($shuju)-1]+1, $p_y[count($shuju)-1]+1, $xian_yanse);
//Mark data values
- for($i=0;$i imagestring ( $image, 3, $p_x[$i]+4, $p_y[$i]- 12,$shuju[$i], $zuobiao_yanse);
- }
- //Set the file header
- header('Content-type: image/png');
- //Output image
- imagepng($image);
- / /Release resources
- imagedestroy($image);
- ?>
-
Copy code
Second, how to use
Insert the following code where the image needs to be displayed:
Instructions:
The value of a is calculated by yourself;
The text format of a is a string of several data connected by ",", which is passed in through the get method.
Since writing Chinese into graphics requires more PHP environment configuration, here is an HTML solution:
You only need to dynamically generate a table to place the horizontal axis coordinate scale names based on the number of data.
Example:
-
- for($ i=0;$i<12;$i++) {
- echo "
".$i."月 | ";
- }
- ?>
- tr>
Copy code
|