PHP生成图表pChart的示例解析


Posted in PHP onJuly 31, 2020

pChart是一个开源的图表生成库,主要涉及3个Class:pChart.class, pData.class, pCache.class,可生成20多种简单或复杂的图表,支持PNG,JPG,GIF通用图片格式。数据源可以来自于Database,CSV,当然也可以手写。使用该程序PHP需要开启GD服务,先来看看pChart的工作流程:

PHP生成图表pChart的示例解析

主要分为三步:

  1. * 读取用于生成图表数据(数据库、文件)
  2. * 设计图表样式(圆角、底色等)
  3. * 制作标签、题目、图例并生成图表

下面看一个简单的柱状图表:

PHP生成图表pChart的示例解析

代码如下:

<?php
 // Standard inclusions 
 include("pChart/pData.class");
 include("pChart/pChart.class");

 // Dataset definition 
 $DataSet = new pData;
 //图表数据
 $DataSet->AddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4),"Serie1");
 $DataSet->AddPoint(array(3,3,-4,1,-2,2,1,0,-1,6,3),"Serie2");
 $DataSet->AddPoint(array(4,1,2,-1,-4,-2,3,2,1,2,2),"Serie3");
 $DataSet->AddAllSeries();
 $DataSet->SetAbsciseLabelSerie();
 //数据图例
 $DataSet->SetSerieName("Microsoft","Serie1");
 $DataSet->SetSerieName("IBM","Serie2");
 $DataSet->SetSerieName("Google","Serie3");

 // Initialise the graph
 $Test = new pChart(700,230);
 //设置图表尺寸、样式
 $Test->setFontProperties("Fonts/tahoma.ttf",8);
 $Test->setGraphArea(50,30,680,200);
 $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
 $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
 $Test->drawGraphArea(255,255,255,TRUE);
 $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
 $Test->drawGrid(4,TRUE,230,230,230,50);

 // Draw the 0 line
 $Test->setFontProperties("Fonts/MankSans.ttf",6);
 $Test->drawTreshold(0,143,55,72,TRUE,TRUE);

 // Draw the bar graph
 //柱状图要使用drawBarGraph()
 $Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);


 // Finish the graph
 //制作图例、标题、字体等属性
 $Test->setFontProperties("Fonts/MankSans.ttf",10);
 $Test->drawLegend(596,150,$DataSet->GetDataDescription(),255,255,255);
 $Test->setFontProperties("Fonts/MankSans.ttf",10);
 $Test->drawTitle(50,22,"Example",50,50,50,585);
 
 //生成图表
 $imageFile = "example12.png";
 $Test->Render($imageFile);
 echo '<img src="'.$imageFile.'">';
?>

这个是雷达效果的:

PHP生成图表pChart的示例解析

代码:

<?php
 // Standard inclusions 
 include("pChart/pData.class");
 include("pChart/pChart.class");

 // Dataset definition 
 $DataSet = new pData;
 $DataSet->AddPoint(array("Memory","Disk","Network","Slots","CPU"),"Label");
 $DataSet->AddPoint(array(6,4,7,4,5),"Serie1");
 $DataSet->AddPoint(array(2,3,5,2,4),"Serie2");
 $DataSet->AddSerie("Serie1");
 $DataSet->AddSerie("Serie2");
 $DataSet->SetAbsciseLabelSerie("Label");


 $DataSet->SetSerieName("Reference","Serie1");
 $DataSet->SetSerieName("Tested computer","Serie2");

 // Initialise the graph
 $Test = new pChart(400,400);
 $Test->setFontProperties("Fonts/tahoma.ttf",8);
 $Test->drawFilledRoundedRectangle(7,7,393,393,5,240,240,240);
 $Test->drawRoundedRectangle(5,5,395,395,5,230,230,230);
 $Test->setGraphArea(30,30,370,370);
 $Test->drawFilledRoundedRectangle(30,30,370,370,5,255,255,255);
 $Test->drawRoundedRectangle(30,30,370,370,5,220,220,220);

 // Draw the radar graph
 //要使用drawRadarAxis()生成雷达效果
 $Test->drawRadarAxis($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,20,120,120,120,230,230,230);
 $Test->drawFilledRadar($DataSet->GetData(),$DataSet->GetDataDescription(),50,20);

 // Finish the graph
 $Test->drawLegend(15,15,$DataSet->GetDataDescription(),255,255,255);
 $Test->setFontProperties("Fonts/tahoma.ttf",10);
 $Test->drawTitle(0,22,"Example",50,50,50,400);
 
 $imageFile = "example8.png";
 $Test->Render($imageFile);
 echo '<img src="'.$imageFile.'">';
?>

再看几个其他的效果

1,饼图:

PHP生成图表pChart的示例解析

2, 双座标曲线图:

PHP生成图表pChart的示例解析

3, 层叠柱状图:

PHP生成图表pChart的示例解析

4, 多图表:

PHP生成图表pChart的示例解析

图表的种类已经相当丰富了,具体图表设置请参考

到此这篇关于PHP生成图表pChart的示例解析的文章就介绍到这了,更多相关PHP生成图表pChart内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
thinkphp 验证码 的使用小结
May 07 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
基于php伪静态的实现方法解析
Jul 31 #PHP
PHP底层运行机制与工作原理详解
Jul 31 #PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 #PHP
PHP网页缓存技术优点及代码实例
Jul 29 #PHP
phpStudy vscode 搭建debug调试的教程详解
Jul 28 #PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 #PHP
关于PHP中interface的用处详解
Jul 26 #PHP
You might like
php二维数组排序详解
2013/11/06 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
django 删除数据库表后重新同步的方法
2018/05/27 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python通过字典映射函数实现switch
2020/11/06 Python
校园奶茶店创业计划书
2014/01/23 职场文书
小学教师师德反思
2014/02/03 职场文书
函授本科自我鉴定
2014/02/04 职场文书
开学典礼决心书
2014/03/11 职场文书
扬尘污染防治方案
2014/06/15 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
办理信用卡工作证明
2014/09/30 职场文书
课外活动总结
2015/02/04 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android
Python如何使用循环结构和分支结构
2022/04/13 Python
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技