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 fopen 读取带中文URL地址的一点见解
Sep 25 PHP
PHP_Cooikes不同页面无法传递的解决方法
Mar 07 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
PHP时间相关常用函数用法示例
Jun 03 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 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框架Phpbean说明
2008/01/10 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
Python可以用来做什么
2020/11/23 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
国际贸易个人求职信范文
2014/01/04 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
旷课检讨书范文
2014/10/30 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
青春雷锋观后感
2015/06/10 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL