Home >php教程 >php手册 >PHP绘制心电形状曲线统计图表[源码]

PHP绘制心电形状曲线统计图表[源码]

WBOY
WBOYOriginal
2016-06-13 10:40:431223browse

   先看下最终效果:

       下面为PHP代码:

 

<ol class="dp-xml">
<li class="alt"><span><span>/******************************  </span></span></li>
<li><span>*            折线图生成函数  </span></li>
<li class="alt"><span>******************************/  </span></li>
<li>
<span>function line_stats_pic($value_y,$width,$high,$</span><span class="attribute">strong</span><span>=</span><span class="attribute-value">1</span><span>,$</span><span class="attribute">fix</span><span>=</span><span class="attribute-value">0</span><span>){  </span>
</li>
<li class="alt"><span>//y值处理函数  </span></li>
<li><span>function line_point_y($num,$width,$high,$max_num_add,$min_num_add,$y_pxdensity){  </span></li>
<li class="alt">
<span>    $</span><span class="attribute">return</span><span>=$high-floor(($num-$min_num_add+$y_pxdensity)/(($max_num_add-$min_num_add)/$high));  </span>
</li>
<li><span>    return $return;  </span></li>
<li class="alt"><span>}  </span></li>
<li><span> </span></li>
<li class="alt"><span>//参数处理  </span></li>
<li>
<span>$</span><span class="attribute">allnum</span><span>=</span><span class="attribute-value">sizeof</span><span>($value_y);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute-value">max</span><span class="attribute">max_num</span><span>=max($value_y);                            //最大值  </span>
</li>
<li>
<span>$</span><span class="attribute-value">min</span><span class="attribute">min_num</span><span>=min($value_y);                            //最小值  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">limit_m</span><span>=$max_num-$min_num;                        //极差  </span>
</li>
<li>
<span>$</span><span class="attribute">max_num_add</span><span>=$max_num+$limit_m*0.1;                //轴最大值  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">min_num_add</span><span>=$min_num-$limit_m*0.1;                //轴最小值  </span>
</li>
<li>
<span>$</span><span class="attribute">limit</span><span>=$max_num_add-$min_num_add;                 //极差-坐标轴y  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y_pxdensity</span><span>=($max_num_add-$min_num_add)/$high;    //y轴密度  </span>
</li>
<li>
<span>$</span><span class="attribute">x_pxdensity</span><span>=</span><span class="attribute-value">floor</span><span>($width/$allnum);                //x轴密度  </span>
</li>
<li class="alt"><span>reset($value_y);                                 //将数组指针归零  </span></li>
<li>
<span>$</span><span class="attribute">i</span><span>=</span><span class="attribute-value">0</span><span>;  </span>
</li>
<li class="alt"><span>foreach($value_y as $val){  </span></li>
<li><span>    $point_y[$i]=line_point_y($val,$width,$high,$max_num_add,$min_num_add,$y_pxdensity);  </span></li>
<li class="alt"><span>    $i++;  </span></li>
<li><span>}  </span></li>
<li class="alt">
<span>$</span><span class="attribute">zero_y</span><span>=</span><span class="attribute-value">line_point_y</span><span>(0,$width,$high,$max_num_add,$min_num_add,$y_pxdensity);    //零点的y值  </span>
</li>
<li>
<span>$</span><span class="attribute">empty_size_x</span><span>=(strlen($max_num) </span><span class="tag">></span><span> strlen($min_num) ? strlen($max_num) : strlen($min_num))*5+3;                    //左边空白  </span>
</li>
<li class="alt"><span> </span></li>
<li><span>//图片流开始  </span></li>
<li class="alt"><span>header("Content-type:image/png");  </span></li>
<li>
<span>$</span><span class="attribute">pic</span><span>=</span><span class="attribute-value">imagecreate</span><span>($width+$empty_size_x+10,$high+13);  </span>
</li>
<li class="alt"><span>imagecolorallocate($pic,255,255,255);         //背景色  </span></li>
<li>
<span>$</span><span class="attribute">color_1</span><span>=</span><span class="attribute-value">imagecolorallocate</span><span>($pic,30,144,255); //线条色  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">color_2</span><span>=</span><span class="attribute-value">imagecolorallocate</span><span>($pic,0,0,0);     //黑色  </span>
</li>
<li>
<span>$</span><span class="attribute">color_3</span><span>=</span><span class="attribute-value">imagecolorallocate</span><span>($pic,194,194,194);//灰色  </span>
</li>
<li class="alt"><span>//绘制网格  </span></li>
<li><span>imagesetthickness($pic,1);                    //网格线宽  </span></li>
<li class="alt">
<span>$</span><span class="attribute">y_line_width</span><span>=</span><span class="attribute-value">floor</span><span>($width/100);             //纵网格线数目  </span>
</li>
<li>
<span>$</span><span class="attribute">y_line_density</span><span>=$</span><span class="attribute">y_line_width</span><span>==0 ? 0 :floor($width/$y_line_width); //纵网格线密度  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">point_zero_y</span><span>=$zero_y </span><span class="tag">></span><span> $high ? $high : $zero_y;  </span>
</li>
<li><span>imagestring($pic,1,$empty_size_x-1,$high+4,"0",$color_2); //零点数轴标记  </span></li>
<li class="alt">
<span>for($</span><span class="attribute">i</span><span>=</span><span class="attribute-value">1</span><span>;$i </span><span class="tag"><span>= $y_line_width;$i++){            //绘制纵网格线  </span></span>
</li>
<li><span>    imagesetthickness($pic,1);                 //网格线宽  </span></li>
<li class="alt"><span>    imageline($pic,$y_line_density*$i+$empty_size_x,0,$y_line_density*$i+$empty_size_x,$high,$color_3);  </span></li>
<li><span>    imagesetthickness($pic,2);                 //轴点线宽  </span></li>
<li class="alt"><span>    imageline($pic,$y_line_density*$i+$empty_size_x,$point_zero_y-4,$y_line_density*$i+$empty_size_x,$point_zero_y,$color_2);  </span></li>
<li><span>    imagestring($pic,1,10						
</span></li>
</ol>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn