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

主要分为三步:

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

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

代码如下:

<?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
// 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,饼图:

2, 双座标曲线图:

3, 层叠柱状图:

4, 多图表:

图表的种类已经相当丰富了,具体图表设置请参考
http://pchart.sourceforge.net/documentation.php?topic=pChart 
::源代码下载::

作者:李敬然(Gnie)

最新文章

  1. 打印log
  2. CentOS联网
  3. 关于新的man版本出现“无法解析 /usr/share/man/zh_CN/man1/ls.1.gz: 没有那个文件或目录“
  4. 清理300多台MySQL数据库的过期binlog日志
  5. Unity3D GUI学习之GUI窗口的使用
  6. linux定时任务crond那些事!
  7. Hdu2860-Regroup(种类并查集)
  8. 如何快速方便的输出向量vector容器中不重复的内容
  9. jstl的小问题
  10. Crayon 线段树或者树状数组
  11. LOJ 2551 「JSOI2018」列队——主席树+二分
  12. MyBatis基础入门《二十》动态SQL(foreach)
  13. Spring boot+mybatis+thymeleaf 实现登录注册,增删改查
  14. Shell-12 -- case
  15. 第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装
  16. Linux命令详解----iostat
  17. CCF认证201712-1最小差值
  18. LNMP架构下Discuz论坛的搭建
  19. 深入浅出JDBC-快速入门
  20. SSM框架构建多模块之业务拆分实践

热门文章

  1. 论文翻译——Lattice indexing for spoken term detection
  2. spring kafka生产、消费消息
  3. cout,cerr和clog的区别
  4. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165237
  5. JAVA学习笔记(3)—— 抽象类与接口
  6. 【medium】78. Subsets
  7. Unity简单塔防游戏的开发——敌人移动路径的创建及移动
  8. SpringBoot参数注解
  9. P1347 排序
  10. 差分线Layout的两个误区