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 相关文章推荐
PHP STRING 陷阱原理说明
Jul 24 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
解析yii数据库的增删查改
Jun 20 PHP
php header功能的使用
Oct 28 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
php递归删除目录与文件的方法
Jan 30 PHP
PHP中list()函数用法实例简析
Jan 08 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python删除n行后的其他行方法
2019/01/28 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
美国在线家装零售商:Build.com
2016/09/02 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
中秋节活动总结
2014/08/29 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL