Table of Contents
回复讨论(解决方案)
Home Backend Development PHP Tutorial php绘图,请高人修改。。

php绘图,请高人修改。。

Jun 23, 2016 pm 02:23 PM

1

<?$kuan=30;//色柱宽$jiange=20;//色柱间间隔$zuo=20;//左侧留空$you=20;//右侧留空$shang=20;//上留空$xia=10;//下留空$zuidashujuzhi=1;//初始化纵轴最大数据值if ($_GET["a"]=="") die("error id:0");$shuju=split(",",$_GET["a"]);//得到最大值for($i=0;$i<count($shuju);$i++){if(!is_numeric($shuju[$i])) die("error id:1");if($shuju[$i]>$zuidashujuzhi) $zuidashujuzhi=$shuju[$i];}//计算图像宽度 $img_kuan=$zuo+$you+$jiange+count($shuju)*($kuan+$jiange);//图像高 $img_gao=170;//存储色柱高度的数组$zhugaodu = array();$image = imagecreate($img_kuan,$img_gao);$white = imagecolorallocate($image, 0xEE, 0xEE, 0xEE);//色柱颜色$shuju_yanse =array(imagecolorallocate($image, 0x97, 0xbd, 0x00),imagecolorallocate($image, 0x00, 0x99, 0x00),imagecolorallocate($image, 0xcc, 0x33, 0x00),imagecolorallocate($image, 0xff, 0xcc, 0x00),imagecolorallocate($image, 0x33, 0x66, 0xcc),imagecolorallocate($image, 0x33, 0xcc, 0x33),imagecolorallocate($image, 0xff, 0x99, 0x33),imagecolorallocate($image, 0xcc, 0xcc, 0x99),imagecolorallocate($image, 0x99, 0xcc, 0x66),imagecolorallocate($image, 0x66, 0xff, 0x99));//坐标轴颜色$zuobiao_yanse = imagecolorallocate($image, 0x00, 0x00, 0x00);//横轴imageline ( $image, $zuo, $img_gao-$xia, $img_kuan-$you/2, $img_gao-$xia, $zuobiao_yanse);//纵轴imageline ( $image, $zuo, $shang/2, $zuo, $img_gao-$xia, $zuobiao_yanse);//纵轴刻度,纵轴上共标注4个点,所以这里分别计算即可imageline ( $image, $zuo, $shang, $zuo+6, $shang, $zuobiao_yanse);imagestring ( $image, 3, $zuo/4, $shang,round($zuidashujuzhi), $zuobiao_yanse);imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*1/4, $zuo+6, round($shang+($img_gao-$shang-$xia)*1/4), $zuobiao_yanse);imagestring ( $image, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*1/4,round($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, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*2/4,round($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, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*3/4,round($zuidashujuzhi*1/4), $zuobiao_yanse);//得到每个柱的高度for($i=0;$i<count($shuju);$i++){array_push ($zhugaodu, round(($img_gao-$shang-$xia)*$shuju[$i]/$zuidashujuzhi));}//画数据柱$shuju_yanse_int=0;for($i=0;$i<count($shuju);$i++){imagefilledrectangle( $image,$zuo+$jiange+$i*($kuan+$jiange),$shang+($img_gao-$shang-$xia)-$zhugaodu[$i],$zuo+$jiange+$i*($kuan+$jiange)+$kuan,($img_gao-$xia)-1 ,$shuju_yanse[$shuju_yanse_int]);//因为只定义了10种颜色,所以这里做一个循环  if($shuju_yanse_int==9){$shuju_yanse_int=0;}else{$shuju_yanse_int++;}}//标注数据柱上方数据值for($i=0;$i<count($shuju);$i++){imagestring ( $image, 1, $zuo+$jiange+$i*($kuan+$jiange)+2,$shang+($img_gao-$shang-$xia)-$zhugaodu[$i]-10,$shuju[$i], $zuobiao_yanse);}header('Content-type: image/png');imagepng($image);imagedestroy($image);?>

Copy after login
Copy after login


这样子可以生成

img.php?a=5.4,2,30.2,4,0,6,7.7,3.8,2,3,4
用下面这个参数可以得到上面的图片。。
我现在想获取到比如5.4里面,我又分成三个属性,并且显示每个立柱的名字,请问该如何改进代码。


并且下面的类型个数不限制,比如有钢管,铝管,铜管,金管,。。。。。有若干个。
但是属性只有三个。。。。每个都为整数。。。

求高人给帮忙修改一下代码,或者给我一个简便的代码。。感谢了。


回复讨论(解决方案)

1

<?$kuan=30;//色柱宽$jiange=20;//色柱间间隔$zuo=20;//左侧留空$you=20;//右侧留空$shang=20;//上留空$xia=10;//下留空$zuidashujuzhi=1;//初始化纵轴最大数据值if ($_GET["a"]=="") die("error id:0");$shuju=split(",",$_GET["a"]);//得到最大值for($i=0;$i<count($shuju);$i++){if(!is_numeric($shuju[$i])) die("error id:1");if($shuju[$i]>$zuidashujuzhi) $zuidashujuzhi=$shuju[$i];}//计算图像宽度 $img_kuan=$zuo+$you+$jiange+count($shuju)*($kuan+$jiange);//图像高 $img_gao=170;//存储色柱高度的数组$zhugaodu = array();$image = imagecreate($img_kuan,$img_gao);$white = imagecolorallocate($image, 0xEE, 0xEE, 0xEE);//色柱颜色$shuju_yanse =array(imagecolorallocate($image, 0x97, 0xbd, 0x00),imagecolorallocate($image, 0x00, 0x99, 0x00),imagecolorallocate($image, 0xcc, 0x33, 0x00),imagecolorallocate($image, 0xff, 0xcc, 0x00),imagecolorallocate($image, 0x33, 0x66, 0xcc),imagecolorallocate($image, 0x33, 0xcc, 0x33),imagecolorallocate($image, 0xff, 0x99, 0x33),imagecolorallocate($image, 0xcc, 0xcc, 0x99),imagecolorallocate($image, 0x99, 0xcc, 0x66),imagecolorallocate($image, 0x66, 0xff, 0x99));//坐标轴颜色$zuobiao_yanse = imagecolorallocate($image, 0x00, 0x00, 0x00);//横轴imageline ( $image, $zuo, $img_gao-$xia, $img_kuan-$you/2, $img_gao-$xia, $zuobiao_yanse);//纵轴imageline ( $image, $zuo, $shang/2, $zuo, $img_gao-$xia, $zuobiao_yanse);//纵轴刻度,纵轴上共标注4个点,所以这里分别计算即可imageline ( $image, $zuo, $shang, $zuo+6, $shang, $zuobiao_yanse);imagestring ( $image, 3, $zuo/4, $shang,round($zuidashujuzhi), $zuobiao_yanse);imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*1/4, $zuo+6, round($shang+($img_gao-$shang-$xia)*1/4), $zuobiao_yanse);imagestring ( $image, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*1/4,round($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, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*2/4,round($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, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*3/4,round($zuidashujuzhi*1/4), $zuobiao_yanse);//得到每个柱的高度for($i=0;$i<count($shuju);$i++){array_push ($zhugaodu, round(($img_gao-$shang-$xia)*$shuju[$i]/$zuidashujuzhi));}//画数据柱$shuju_yanse_int=0;for($i=0;$i<count($shuju);$i++){imagefilledrectangle( $image,$zuo+$jiange+$i*($kuan+$jiange),$shang+($img_gao-$shang-$xia)-$zhugaodu[$i],$zuo+$jiange+$i*($kuan+$jiange)+$kuan,($img_gao-$xia)-1 ,$shuju_yanse[$shuju_yanse_int]);//因为只定义了10种颜色,所以这里做一个循环  if($shuju_yanse_int==9){$shuju_yanse_int=0;}else{$shuju_yanse_int++;}}//标注数据柱上方数据值for($i=0;$i<count($shuju);$i++){imagestring ( $image, 1, $zuo+$jiange+$i*($kuan+$jiange)+2,$shang+($img_gao-$shang-$xia)-$zhugaodu[$i]-10,$shuju[$i], $zuobiao_yanse);}header('Content-type: image/png');imagepng($image);imagedestroy($image);?>

Copy after login
Copy after login


这样子可以生成

img.php?a=5.4,2,30.2,4,0,6,7.7,3.8,2,3,4
用下面这个参数可以得到上面的图片。。
我现在想获取到比如5.4里面,我又分成三个属性,并且显示每个立柱的名字,请问该如何改进代码。


并且下面的类型个数不限制,比如有钢管,铝管,铜管,金管,。。。。。有若干个。
但是属性只有三个。。。。每个都为整数。。。

求高人给帮忙修改一下代码,或者给我一个简便的代码。。感谢了。


高人都去哪里了啊。。。

画汉字很容易,imagettftext 就可轻松完成
但我不可能替你去组织数据

我现在想获取到比如5.4里面,我又分成三个属性,并且显示每个立柱的名字,请问该如何改进代码。
并且下面的类型个数不限制,比如有钢管,铝管,铜管,金管,。。。。。有若干个。
但是属性只有三个。。。。每个都为整数。。。 纵坐标都会画,照着改下就能画出横坐标了撒。画数据柱可以用两个循环嵌套,外面循环n次,n为管的种类数,并设置每个种类间隔长度;里面循环就画条形图呗,无间隔。然后计算好图的高度坐标,写上号码字符就行了啊。

这样图形 jquery 插件一大堆! 用什么php绘画.

就算是php也有图形包啊

就算是php也有图形包啊

请高人指点啊,本人菜鸟一个。。。


http://www.baidu.com/s?wd=pChart


http://www.baidu.com/s?wd=pChart

看过这个,正在研究用法。。
有高人告诉用法么?

看看API,找找他们的例子,拷贝过来修改下参数就可以。
JS图表库用这个很方便,应该有符合你的案例:Highcharts

Statement of this Website
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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

11 Best PHP URL Shortener Scripts (Free and Premium) 11 Best PHP URL Shortener Scripts (Free and Premium) Mar 03, 2025 am 10:49 AM

11 Best PHP URL Shortener Scripts (Free and Premium)

Working with Flash Session Data in Laravel Working with Flash Session Data in Laravel Mar 12, 2025 pm 05:08 PM

Working with Flash Session Data in Laravel

Simplified HTTP Response Mocking in Laravel Tests Simplified HTTP Response Mocking in Laravel Tests Mar 12, 2025 pm 05:09 PM

Simplified HTTP Response Mocking in Laravel Tests

Build a React App With a Laravel Back End: Part 2, React Build a React App With a Laravel Back End: Part 2, React Mar 04, 2025 am 09:33 AM

Build a React App With a Laravel Back End: Part 2, React

cURL in PHP: How to Use the PHP cURL Extension in REST APIs cURL in PHP: How to Use the PHP cURL Extension in REST APIs Mar 14, 2025 am 11:42 AM

cURL in PHP: How to Use the PHP cURL Extension in REST APIs

12 Best PHP Chat Scripts on CodeCanyon 12 Best PHP Chat Scripts on CodeCanyon Mar 13, 2025 pm 12:08 PM

12 Best PHP Chat Scripts on CodeCanyon

Introduction to the Instagram API Introduction to the Instagram API Mar 02, 2025 am 09:32 AM

Introduction to the Instagram API

Notifications in Laravel Notifications in Laravel Mar 04, 2025 am 09:22 AM

Notifications in Laravel

See all articles