收藏 分享(赏)

php生成折线图 柱状态图 条形图.doc

上传人:ysd1539 文档编号:6211471 上传时间:2019-04-02 格式:DOC 页数:10 大小:51.50KB
下载 相关 举报
php生成折线图 柱状态图 条形图.doc_第1页
第1页 / 共10页
php生成折线图 柱状态图 条形图.doc_第2页
第2页 / 共10页
php生成折线图 柱状态图 条形图.doc_第3页
第3页 / 共10页
php生成折线图 柱状态图 条形图.doc_第4页
第4页 / 共10页
php生成折线图 柱状态图 条形图.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、目录序 饼装图 设计思路 实现过程 使用方法 实现效果 折线图 设计思路 实现过程 使用方法 实现效果 柱状图 设计思路 实现过程 使用方法 实现效果 参考文献 相关链接 序 PHP 在图像操作方面的表现非常出色,我们只需借助可以免费得到的 GD 库便可以轻松实现图、表勾画。下面将分别介绍笔者实现的饼状图、折线图和柱状图以及他们的使用方法,这几段代码的特点就是不需要再把它们复制到你的代码之中,只需要把计算得到的数据作为参数传入,即可得到相应的图形效果开发环境:PHP Version 4.3.6GD Version bundled (2.0.22 compatible) 本文适宜初学 PHP 编

2、程的朋友阅读,用于初步了解 PHP 操作图像的原理作者推荐实用的免费软件 JpGraph 官方网站:http:/www.aditus.nu/jpgraph/作者水平有限,文章中难免存在错误,我将非常感激您的指正饼状图设计思路饼状图表对于查看一个值占总值的百分比是一个好的方法。我们就用 PHP 来实现一个饼形图表。它的设计思想是:1 接受参数,得到所有数值的和,得到每一个值占数值总和的比例。2 根据比例计算每一个色块在图中的圆周角度3 要产生立体效果,只需要用深颜色画出阴影就可以了实现过程$tugao/2-5; $h-) $kaishi=0;$jieshu=0;for ($i = 0; $i 使

3、用方法在需要显示图像的位置插入如下代码a 的文本格式是由“,”连接的若干个数据的字符串,get 方式传入。颜色图例如下,请自行排列:实现效果折线图设计思路用折线图表查看某一数据在单位时段内的变化趋势是一个好的选择。我们就用 PHP 来实现一个动态折线图表。它的设计思想是:1 接受参数,得到所有数值的和,得到数据的最大值以确定纵轴的最大刻度值2 根据数据个数确定图像的宽度,并画出横轴和纵轴坐标及刻度3 画直线连接各点,为每个点填充一个 2*2 的矩形,突出点的位置4 在每个点的右上方标注每个点的数据值实现过程$zuidashujuzhi) $zuidashujuzhi=$shuju$i;/得到图

4、像宽度 $img_kuan=$zuo+$you+count($shuju)*$jiange;/然后创建图像资源 $image = imagecreate($img_kuan,$img_gao);/灰色背景$white = imagecolorallocate($image, 0xEE, 0xEE, 0xEE);/坐标轴用黑色显示$zuobiao_yanse = imagecolorallocate($image, 0x00, 0x00, 0x00);/折线用蓝色显示$xian_yanse = imagecolorallocate($image, 0x00, 0x00, 0xFF);/画坐标/横

5、轴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);/得到每个点的坐标for($i=0;$icount($shuju)imageline ( $image, $p_x$i, $p_y$i, $p_x$i+1, $p_y$i+1, $xian_yanse);imagefilledrectangle($image, $p

6、_x$i-1, $p_y$i-1, $p_x$i+1, $p_y$i+1, $xian_yanse);/上一个循环没有画出最后一个点效果,这里还要追加imagefilledrectangle($image, $p_xcount($shuju)-1-1, $p_ycount($shuju)-1-1, $p_xcount($shuju)-1+1, $p_ycount($shuju)-1+1, $xian_yanse);/标注数据值for($i=0;$i使用方法在需要显示图像的位置插入如下代码其中 a 的值由你自己计算得出a 的文本格式是由“,”连接的若干个数据的字符串,get 方式传入。由于往图形

7、里写入中文需要更多 PHP 环境配置,所以这里给出一个 html 解决方案,实用也很灵活:大家只需要根据数据个数的不同,动态生成一个表格放置横轴坐标刻度名称就行了,像这样“.$i.“月“;?实现效果柱状图设计思路还是要首先确定纵轴的刻度值,确定纵轴的刻度最大值 然后根据得到的数据个数确定图像的宽度,这时就可以创建图像了 计算每个色柱的高度,用高度可以计算出色柱的填充范围 用直线画出坐标轴,标注刻度值 用矩形填充色柱,并在色柱上方标注数据值 用 Html 方式画出需要的横轴坐标名称 实现过程$zuidashujuzhi) $zuidashujuzhi=$shuju$i;/计算图像宽度 $img_

8、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, 0

9、x99, 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(

10、$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

11、_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

12、_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)

13、*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使用方法在需要显示图像的位置插入如下代码其中 a 的值由你自己计算得出a 的文本格式是由“,”连接的若干个数据的字符串,get 方式传入。同样使用一个 html 解决方案,解决横轴刻度名称的问题:根据数据个数的不同,动态生成一个表格放置横轴坐标刻度名称就行了,像这样“.$i.“月“;?实现效果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > PHP资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报