设为首页 收藏本站
查看: 388|回复: 0

[经验分享] PHP柱状图、饼状图和线性图

[复制链接]

尚未签到

发表于 2017-4-8 11:49:28 | 显示全部楼层 |阅读模式
首先我们要介绍一下我们在这篇文章中使用的PHP类Libchart,这是个外国人(非中国国籍的地球人,被称为外国人!)写的免费类!使用起来非常简单。看出来了吧,我们是要用一个外国人写的PHP创建柱状图,饼状图,和线性图的类,来工作的。如果你要学习这个类的写法,你也可以把这个类下载下来看看外国人的思路!

我们开始吧,首先下载这个类 点击此处:下载Libchart ,解压缩!

第一个用例,我们来创建一个纵向的柱状图:
首先我们包含这个类文件到我们的程序中,并且实例化这个类,程序如下:

requir_once('./Libchart/classes/libchart.php');

$chart =newVerticalBarChart(500,250);//参数表示需要创建的图像的宽和高

 

$dataSet =newXYDataSet();//实例化一个XY轴数据对象

//为这个对象增加四组数据集合,Point对象的第一个参数表示X轴坐标,第二个表示Y轴坐标

$dataSet->addPoint(new Point("Jan 2005",273));

$dataSet->addPoint(new Point("Feb 2005",321));

$dataSet->addPoint(new Point("March 2005",442));

$dataSet->addPoint(new Point("April 2005",711));

 

//把这个数据集合传递给图形对象

$chart->setDataSet($dataSet);

//设置图形的标题,并把它作为一个png文件渲染

$chart->setTitle("Monthly usage for www.example.com");

$chart->render("generated/demo1.png");//这里需要一个路径和文件名称

就这么简单一个像下图一样美丽的柱状图就出来了。


PHP柱状图

PHP创建一个饼状图的过程和上边说的柱状图大同小异,具体实例代码如下:

$chart =newPieChart(500,250);

 

$dataSet =newXYDataSet();

$dataSet->addPoint(new Point("Mozilla Firefox (80)",80));

$dataSet->addPoint(new Point("Konqueror (75)",75));

$dataSet->addPoint(new Point("Other (50)",50));

$chart->setDataSet($dataSet);

 

$chart->setTitle("User agents for www.example.com");

$chart->render("generated/demo2.png");

创建饼状图就一点值得说一下就是Point的参数,第一个参数是占用比例的名称,第二个是数据,并不存在XY坐标;图如下:


饼状图

创建一个线性图,这个有点和上边两个不同,就是数据集合的不同。我们也看到了XYDataSet这个数据集合, 另外在这个类中还有一个数据集合XYSeriesDataSet(),这个其实是一个比XYDataSet更大的集合而已,他的元素就是XYDataSet,看一下例子和这段创建PHP线性图的程序,你一定就明白了:

include "../libchart/classes/libchart.php";

 

$chart =newLineChart(500,250);

 

$serie1 =newXYDataSet();

$serie1->addPoint(new Point("06-01",273));

$serie1->addPoint(new Point("06-02",421));

$serie1->addPoint(new Point("06-03",642));

$serie1->addPoint(new Point("06-04",799));

$serie1->addPoint(new Point("06-05",1009));

$serie1->addPoint(new Point("06-06",1106));

 

$serie2 =newXYDataSet();

$serie2->addPoint(new Point("06-01",280));

$serie2->addPoint(new Point("06-02",300));

$serie2->addPoint(new Point("06-03",212));

$serie2->addPoint(new Point("06-04",542));

$serie2->addPoint(new Point("06-05",600));

$serie2->addPoint(new Point("06-06",850));

 

//这些和前面的两个看起来没有什么区别,关键在下边这一段,需要自己理解一下啦:

$dataSet =newXYSeriesDataSet();

$dataSet->addSerie("Product 1", $serie1);

$dataSet->addSerie("Product 2", $serie2);

$chart->setDataSet($dataSet);

$chart->setTitle("Sales for 2006");

$chart-> render("generated/demo3.png");

画出这样一个图来:


线性图

然后,把数据交给图形实例,然后渲染图形,和创建柱状图和线性图是一样的。其实国外还有好多创建柱状图和饼状图的类程序,有的还相当的NB,例如结合flash的,结合webcss的不一而足,这个用起来相对简单一点,大家尽管拿去用好了!

转载请注明来源  : 柳城博客

本文详细出处参考: http://www.liucheng.name/?p=404

 

附:libchart中文乱码的解决

1、自己写的使用Libchart库生成图表的php文件以utf-8编码保存
2、找几个中文字体库,比如华文行楷、宋体等等,复制到libchart\fonts目录下
3、修改libchart\classes目录下的text.php文件
第47、48行


  • $this->fontCondensed = dirname(__FILE__) . "/../fonts/DejaVuSansCondensed.ttf";
  • $this->fontCondensedBold = dirname(__FILE__) . "/../fonts/DejaVuSansCondensed-Bold.ttf";

  改为

  • $this->fontCondensed = dirname(__FILE__) . "/../fonts/你找来的中文字体";
  • $this->fontCondensedBold = dirname(__FILE__) . "/../fonts/你找来的中文字体";

  now,图表里现在显示中文了!!!
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-361931-1-1.html 上篇帖子: 一些开源的php产品的中文研究 下篇帖子: PHP实现 Huffman 树 + simpleTest进行单元测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表