php直线图_php绘图之曲线图

本程序根据文本文件DS.txt中的数据生成曲线图。DS.txt的内容如下:

a,33

b,3

c,56

d,77

其中第一列为X轴坐标,第二列为数据。

############################################################

#***** Counters        *****#

#***** Writed by Amy        *****#

#***** Program at 2003年1月28日      *****#

############################################################

//提交图片文件信息头

Header("Content-type:image/png");

//宏定义,预先定义好打印文字的左边距ML的值为40

define("ML",40); //left margin

$imgh=200;

$imgw=800;

$all_input=array();

$value=array();

$label=array();

$every_line=array();

//$x_grad=31;

$file_name="DS.txt";

//读出计数器的值

$fp=fopen($file_name,"r");

$all_input=file($file_name);

fclose($fp);

$x_grad=count($all_input)-1;

//将数据转化成数组的格式输出

for($i=0;$i<=$x_grad;$i++)

{

$every_line=explode(",",$all_input[$i]);

$label[$i]=$every_line[0];

//$value[$i]=$every_line[1];

$value[$i]=substr ( $every_line[1], 0, strlen($every_line[1])-2);

}

//找出最大的访问量

$max=intval($value[0]);

$str=$value[0];

for($i=1;$i<=$x_grad;$i++)

{

$str.=",$value[$i]";

if($max<=intval($value[$i]))

$max=intval($value[$i]);

}

//$fp=fopen($file_name,"w");

//fputs($fp,$str);

//fclose($fp);

//创建图形

$img=ImageCreate($imgw+1,$imgh*2+1);

//分配颜色

$white=ImageColorAllocate($img,255,255,255);

$black=ImageColorAllocate($img,0,0,0);

$red=ImageColorAllocate($img,255,0,0);

$grey=ImageColorAllocate($img,99,99,99);

$blue=ImageColorAllocate($img,0,0,255);

$textcolor3=ImageColorAllocate($img,100,10,50);

$green=ImageColorAllocate($img,0,150,55);

//画表头

ImageString($img,5,ML*5,ML-30,"Chart",$red);

//画边框

ImageRectangle($img,0,0,$imgw,$imgh*1.4,$black);

//画横坐标

ImageLine ( $img, ML, $imgh, $imgw-ML, $imgh, $black);

ImageString($img,3,$imgw-ML,$imgh+30,"TX",$blue);

//画纵坐标

ImageLine ( $img, ML, ML, ML, $imgh, $black);

ImageString($img,3,ML-10,ML-30,"TY",$blue);

//画纵坐标刻度

$max=intval($max/10)*10+10;

for($i=1;$i<=$max/10;$i++)

{

$y=$imgh-$i*($imgh-ML)/$max*10;

ImageLine ( $img, ML,$y, $imgw-ML, $y, $black);

ImageString($img,3,ML-25,$y-7,$i*10,$black);

}

//按比例输出直方图

$x1=ML*1.5;

$y1=$imgh-$value[0]*(($imgh-ML)/$max);

$sum=$value[0];

ImageString($img,3,$x1-5,$imgh+6,$label[0],$black);

ImageString($img,2,$x1-1,$y-12,$value[0],$green);

for($i=1;$i<=$x_grad;$i++)

{

$x2=ML*1.5+$i*28;

$y2=$imgh-$value[$i]*(($imgh-ML)/$max);

ImageLine ( $img, $x1,$y1, $x2, $y2, $green);

//ImageFilledRectangle($img,$x,$y,$x+6,$imgh,$green);

ImageString($img,3,$x2-5,$imgh+6,$label[$i],$black);

ImageString($img,2,$x2-1,$y-12,$value[$i],$green);

$sum+=$value[$i];

$x1=$x2;

$y1=$y2;

}

//添加说明文字

ImageString($img,3,10,$imgh+30,"Total:$sum",$blue);

//生成图像,清除内存

ImagePNG($img);

ImageDestroy($img);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值