1个回答
2013-08-31
展开全部
<?php
if(empty($dataFile))
{echo"无数据文件!";}
else
{
$point=6;
$data_x=array();
$data_y=array();
$x=array();
$file=$dataFile;
$file_hander=fopen($file,"rb");
while(!feof($file_hander))
{
$buffer=fgets($file_hander);
array_push($x,$buffer);
}
for($i=0;$i<sizeof($x)-1;$i++)
{
$data=explode(" ",$x[$i]);
array_push($data_x,$data[0]);
array_push($data_y,substr($data[1],0,-2));
}
/*for($i=0;$i<sizof($data_x);$i++)
{
echo"[".$data_x[$i].",".$data_y[$i]."]<br>";
}*/
if(sizeof($data_x)==sizeof($data_y))//横纵坐标的个数相同
{
header("Content-type:image/png");
$imgWidth=600;$imgHeight=600;$cha=50;
$image=imagecreate($imgWidth+80,$imgHeight+80);
$colorWhite=imagecolorallocate($image,255,255,255);
$raxi=imagecolorallocate($image,255,0,0);//#ABA9A5
$raxi_o=imagecolorallocate($image,0,255,0);
$net=imagecolorallocate($image,153,204,255);//#99CCFF
$zuobiao=imagecolorallocate($image,255,153,0);//#FF9900
//分别求一下横纵坐标的最大最小值
$max_x=$min_x=$data_x[0];
$min_y=$max_y=$data_y[0];
for($i=1;$i<sizeof($data_x);$i++)
{
$max_x=$max_x>$data_x[$i]?$max_x:$data_x[$i];
$min_x=$min_x<$data_x[$i]?$min_x:$data_x[$i];
$max_y=$max_y>$data_y[$i]?$max_y:$data_y[$i];
$min_y=$min_y<$data_y[$i]?$min_y:$data_y[$i];
}
$num=20;
$bit_x=($max_x-$min_x)/$imgWidth;//X轴实际与显示的比例
$step_x=30*$bit_x;$bit_y=($max_y-$min_y)/$imgHeight;//Y轴实际与显示的比例
$step_y=30*$bit_y;
/*for($i=0;$i<sizeof($data_x);$i++)
echo $data_x[$i]." ";*/
for($i=0;$i<=$num;$i++)//坐标轴
{
imageline($image,($i*30),($imgHeight),(30*($i+1)),($imgHeight),$raxi);//注意,只要画出20个方格即可,不需考虑数据
if($i%2==0)
imagestring($image,2,($i*30),$imgHeight+5,($min_x+$i*$step_x),$raxi_o);//X轴数据
else
imagestring($image,2,($i*30),$imgHeight+5,($min_x+$i*$step_x),$raxi);
imageline($image,0,$imgHeight-30*$i,0,$imgHeight-30*($i+1),$raxi);
if($i%2==0)
imagestring($image,2,10,$imgHeight-30*$i,($min_y+$i*$step_y),$raxi);
else
imagestring($image,2,10,$imgHeight-30*$i,($min_y+$i*$step_y),$raxi_o);
}
for($i=1;$i<=20;$i++)//垂线
{
imageline($image,30*$i,$imgHeight,30*$i,0,$net);
imageline($image,0,$imgHeight-30*$i,$imgWidth,$imgHeight-30*$i,$net);
}
for($i=0;$i<sizeof($data_x)-1;$i++)//画点与点之间的连线
{imageline($image,($data_x[$i]-$min_x)/$bit_x,($imgHeight-($data_y[$i]-$min_y)/$bit_y),($data_x[$i+1]-$min_x)/$bit_x,($imgHeight-($data_y[$i+1]-$min_y)/$bit_y),$raxi);
}
for($i=0;$i<sizeof($data_x);$i++)
{
$show_thing="[".$data_x[$i].",".$data_y[$i]."]";
for($j=0;$j<$point;$j++)//画坐标点
imagearc($image,($data_x[$i]-$min_x)/$bit_x,($imgHeight-($data_y[$i]-$min_y)/$bit_y),$j,$j,0,360,$raxi);
imagestring($image,2,($data_x[$i]-$min_x)/$bit_x,($imgHeight-($data_y[$i]-$min_y)/$bit_y),$show_thing,$zuobiao);
}
imagepng($image);
imagedestroy($image);
}
else echo"横纵坐标的个数不同!请检查一下原文件!";
}
?>
if(empty($dataFile))
{echo"无数据文件!";}
else
{
$point=6;
$data_x=array();
$data_y=array();
$x=array();
$file=$dataFile;
$file_hander=fopen($file,"rb");
while(!feof($file_hander))
{
$buffer=fgets($file_hander);
array_push($x,$buffer);
}
for($i=0;$i<sizeof($x)-1;$i++)
{
$data=explode(" ",$x[$i]);
array_push($data_x,$data[0]);
array_push($data_y,substr($data[1],0,-2));
}
/*for($i=0;$i<sizof($data_x);$i++)
{
echo"[".$data_x[$i].",".$data_y[$i]."]<br>";
}*/
if(sizeof($data_x)==sizeof($data_y))//横纵坐标的个数相同
{
header("Content-type:image/png");
$imgWidth=600;$imgHeight=600;$cha=50;
$image=imagecreate($imgWidth+80,$imgHeight+80);
$colorWhite=imagecolorallocate($image,255,255,255);
$raxi=imagecolorallocate($image,255,0,0);//#ABA9A5
$raxi_o=imagecolorallocate($image,0,255,0);
$net=imagecolorallocate($image,153,204,255);//#99CCFF
$zuobiao=imagecolorallocate($image,255,153,0);//#FF9900
//分别求一下横纵坐标的最大最小值
$max_x=$min_x=$data_x[0];
$min_y=$max_y=$data_y[0];
for($i=1;$i<sizeof($data_x);$i++)
{
$max_x=$max_x>$data_x[$i]?$max_x:$data_x[$i];
$min_x=$min_x<$data_x[$i]?$min_x:$data_x[$i];
$max_y=$max_y>$data_y[$i]?$max_y:$data_y[$i];
$min_y=$min_y<$data_y[$i]?$min_y:$data_y[$i];
}
$num=20;
$bit_x=($max_x-$min_x)/$imgWidth;//X轴实际与显示的比例
$step_x=30*$bit_x;$bit_y=($max_y-$min_y)/$imgHeight;//Y轴实际与显示的比例
$step_y=30*$bit_y;
/*for($i=0;$i<sizeof($data_x);$i++)
echo $data_x[$i]." ";*/
for($i=0;$i<=$num;$i++)//坐标轴
{
imageline($image,($i*30),($imgHeight),(30*($i+1)),($imgHeight),$raxi);//注意,只要画出20个方格即可,不需考虑数据
if($i%2==0)
imagestring($image,2,($i*30),$imgHeight+5,($min_x+$i*$step_x),$raxi_o);//X轴数据
else
imagestring($image,2,($i*30),$imgHeight+5,($min_x+$i*$step_x),$raxi);
imageline($image,0,$imgHeight-30*$i,0,$imgHeight-30*($i+1),$raxi);
if($i%2==0)
imagestring($image,2,10,$imgHeight-30*$i,($min_y+$i*$step_y),$raxi);
else
imagestring($image,2,10,$imgHeight-30*$i,($min_y+$i*$step_y),$raxi_o);
}
for($i=1;$i<=20;$i++)//垂线
{
imageline($image,30*$i,$imgHeight,30*$i,0,$net);
imageline($image,0,$imgHeight-30*$i,$imgWidth,$imgHeight-30*$i,$net);
}
for($i=0;$i<sizeof($data_x)-1;$i++)//画点与点之间的连线
{imageline($image,($data_x[$i]-$min_x)/$bit_x,($imgHeight-($data_y[$i]-$min_y)/$bit_y),($data_x[$i+1]-$min_x)/$bit_x,($imgHeight-($data_y[$i+1]-$min_y)/$bit_y),$raxi);
}
for($i=0;$i<sizeof($data_x);$i++)
{
$show_thing="[".$data_x[$i].",".$data_y[$i]."]";
for($j=0;$j<$point;$j++)//画坐标点
imagearc($image,($data_x[$i]-$min_x)/$bit_x,($imgHeight-($data_y[$i]-$min_y)/$bit_y),$j,$j,0,360,$raxi);
imagestring($image,2,($data_x[$i]-$min_x)/$bit_x,($imgHeight-($data_y[$i]-$min_y)/$bit_y),$show_thing,$zuobiao);
}
imagepng($image);
imagedestroy($image);
}
else echo"横纵坐标的个数不同!请检查一下原文件!";
}
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询