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编程开发“虚拟域名”系统
Oct 09 PHP
PHP语法速查表
Dec 06 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP生成随机密码类分享
Jun 25 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP 实现链式操作
Mar 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实现验证码功能
2006/10/09 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python爬虫中多线程的使用详解
2019/09/23 Python
教学个人的自我评价分享
2014/02/16 职场文书
公益广告宣传方案
2014/02/28 职场文书
业务员自荐信范文
2014/04/20 职场文书
读书活动总结
2014/04/28 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
大学生村官入党自传
2015/06/26 职场文书
培训后的感想
2015/08/07 职场文书
学生会自荐信
2019/05/16 职场文书