`
qzriso
  • 浏览: 242958 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

PHP柱状图、饼状图和线性图

    博客分类:
  • php
阅读更多

首先我们要介绍一下我们在这篇文章中使用的PHPLibchart ,这是个外国人(非中国国籍的地球人,被称为外国人!)写的免费类!使用起来非常简单。看出来了吧,我们是要用一个外国人写的PHP 创建柱状图,饼状图,和线性图的类,来工作的。如果你要学习这个类的写法,你也可以把这个类下载下来看看外国人的思路!

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

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

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

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

 

$dataSet = new XYDataSet() ; // 实例化一个 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 柱状图

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

$chart = new PieChart( 500 , 250 ) ;

 

$dataSet = new XYDataSet() ;

$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 = new LineChart( 500 , 250 ) ;

 

$serie1 = new XYDataSet() ;

$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 = new XYDataSet() ;

$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 = new XYSeriesDataSet() ;

$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 的,结合web css 的不一而足,这个用起来相对简单一点,大家尽管拿去用好了!

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

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

 

附:libchart中文乱码的解决

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

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

改为

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

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

 

分享到:
评论
8 楼 summer-521 2010-09-19  
我禁用了缓存也没用,%>_<%
7 楼 qzriso 2010-09-14  
应该是页面缓存问题,禁用缓存就可以了。
6 楼 summer-521 2010-09-13  
楼主,我有新问题,我从别的链接跳回这个图的时候,如果数据变了它不会刷新,除非我再在页面上手动刷新、、、这是个大问题
5 楼 summer-521 2010-09-13  
楼主,你的libchart类我下载不了、、链接有问题呢
4 楼 qzriso 2010-09-06  
竖的柱状图用VerticalBarChart类,横的用HorizontalBarChart类,即只要把$chart = new VerticalBarChart( 500 , 250 ) ; 这句换成$chart = new  HorizontalBarChart( 500 , 250 ) ;即可。
3 楼 summer-521 2010-09-02  
楼主很强大,再请教一个问题:比如第一个是柱状图,但我想把竖着的柱子变成横着的,类似于将它旋转90度,该怎么改呢?
2 楼 qzriso 2010-08-03  
libchart是个比较简单小巧的图表统计,要自定义纵坐标刻度值,需要自己修改相应的类,如修改抽象类BarChart下的computeAxis方法,把$this->axis = new Axis($this->bound->getYMinValue(), $this->bound->getYMaxValue())中的$this->bound->getYMinValue()改成最小值, $this->bound->getYMaxValue()改成最大值,
或自己增加一个方法,在LineChart等图表类中把$this->computeAxis()换成自己的方法,这种方式破环了OOP的抽象特性,不是很好。若非要这样做,请使用更强大的开源pchart或利用COM组件的teeChart这两个。
1 楼 summer-521 2010-08-03  
楼主,柱状图Y轴的值怎么改啊。。比如你的0.200.400.600.800。。
怎么人为的修改呢

相关推荐

    柱状图转换成饼状图

    在数据分析和可视化领域,柱状图和饼状图是两种常用的数据表示方法。它们各有特点,适用于不同的场景。本文将详细探讨如何将柱状图转换为饼状图,并阐述这两种图表各自的优势和适用情况。 首先,柱状图是一种用于...

    使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip

    使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip使用three.js...

    jQuery柱状图饼状图

    在这个主题中,我们将深入探讨如何使用jQuery实现柱状图和饼状图,这两种图表在数据可视化中非常常见,尤其适用于展示分类数据的比例或数量。 柱状图是一种条形图形,用于比较不同类别的数据。在jQuery中,可以通过...

    Flex制作的几款漂亮的立体柱状图饼状图和折线图

    在给定的资源中,"Flex制作的几款漂亮的立体柱状图饼状图和折线图"显然涉及到Flex的图表组件,这些组件允许开发者创建出具有专业视觉效果的数据可视化应用。 在Flex中,Chart类是用于展示数据的主要组件。它可以...

    php生成柱状图、3D饼状图和折线图

    这里我们主要关注如何使用PHP生成柱状图、3D饼状图和折线图。这通常涉及利用图形库或者框架来简化这个过程。在这个资源包中,包含的`4.php、1.php、3.php、2.php`可能是实现这些功能的具体代码示例,而`images`目录...

    VC柱状图饼状图折线图实例

    在VC++编程环境中,MSChart控件是一种强大的图形绘制工具,可以用来生成各种图表,如柱状图、饼状图和折线图。这些图表在数据可视化中扮演着重要角色,帮助用户直观地理解大量复杂的数据。下面我们将深入探讨如何...

    js 柱状图 饼状图 等

    在JavaScript的世界里,柱状图和饼状图是两种常用的数据可视化工具,它们能帮助我们直观地理解数据分布和比例关系。柱状图通常用于比较不同类别的数值,而饼状图则展示各部分占整体的比例。让我们深入探讨这两种图表...

    自绘折线图、柱状图、饼状图的类

    自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、...

    用arcgis for flex 在地图上显示柱状图 饼状图和折线图

    本教程将深入讲解如何利用ArcGIS for Flex在地图上显示柱状图、饼状图和折线图,以便于用户更直观地理解地理数据。 首先,我们需要了解ArcGIS for Flex的基本概念。ArcGIS for Flex是一个基于Adobe Flex的开发库,...

    FLEX画图之各种柱状图饼状图画法

    在本文中,我们将深入探讨如何使用Adobe Flex技术来创建各种柱状图和饼状图。Flex是一个基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。通过使用Flex,开发者可以轻松地创建交互式的图形界面...

    C#最新柱状图饼状图程序源码

    在这个场景中,我们关注的是一个基于C#编程语言的项目,它包含了创建柱状图和饼状图的功能,并且与数据库进行了集成。这是一份珍贵的源码资源,对于那些需要进行数据展示和分析的开发者来说,它具有很高的学习价值。...

    asp.net统计 柱状图 饼状图

    在ASP.NET中,柱状图和饼状图是两种常用的数据可视化工具,它们能够帮助开发者以图形化的方式展示数据,使用户更容易理解复杂的信息。在本项目中,"asp.net统计 柱状图 饼状图"的实现旨在提供一套解决方案,允许...

    柱状图 饼状图应用

    在数据分析和可视化领域,柱状图和饼状图是两种常用的数据表示方法,它们能够直观地展示数据分布和比例关系。在Java编程环境下,我们可以通过各种库和框架来实现这些图表的生成,使得数据结果更加易于理解。接下来,...

    WPF柱状图饼状图折线图

    WPF提供了多种图表类型,如柱状图、饼状图和折线图,这些图表对于数据分析、报告展示以及用户交互来说都非常实用。下面我们将深入探讨这些图表类型及其在WPF中的实现。 首先,柱状图(Column Chart)是一种常用的...

    柱状图 折线图 饼状图

    根据提供的文件信息,本文将详细解析如何使用Java代码实现柱状图、折线图与饼状图,并且针对每一个图表的实现过程进行深入探讨。在实际应用中,这些图表经常被用于数据分析、业务报告以及数据可视化展示等领域。 ##...

    java制作jfreechart柱状图 饼状图 折线图

    Java中的JFreeChart库是一个强大的工具,用于生成各种类型的图表,包括柱状图、饼状图和折线图。在本教程中,我们将深入探讨如何使用JFreeChart创建这些图表,以及如何用随机生成的数据作为数据源。 首先,...

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

    柱状图V3_Labviewhistogram_labview.柱形图_labview柱状图_labview柱状图

    柱形图_labview柱状图_labview柱状图"是一个关于使用Labview创建柱状图的项目,主要关注的是数据的可视化表示,这对于数据分析和结果展示至关重要。 柱状图是一种常用的数据表示方式,它通过长条的高度来显示各个...

    java 实现饼状图、柱状图、折线图

    在Java编程语言中,生成数据可视化图形,如饼状图、柱状图和折线图,是数据分析和展示的关键步骤。这些图表可以帮助我们直观地理解数据分布和趋势。本篇文章将详细探讨如何使用Java实现这三种图表。 首先,饼状图...

    highcharts 下钻 多个series 三级 四级 多级 多种图例 柱状图 饼状图 折线图

    解决highcharts多级下钻问题,下钻过程中使用了多种图例,自带上钻功能 c#,java使用方法一样,demo中使用c#方法实现 vs打开直接可以运行无需连接数据库 大数据可使用异步下钻...

Global site tag (gtag.js) - Google Analytics