使用libchart绘制图表

头文件:

include("./class/libchart/classes/libchart.php");

由于绘制图表的需求不是很常见,因此,没有包含在class/class.php中。当需要绘制图表时,请单独包含此头文件。

在每个新的工程里,都有自己的LOGO,此LOGO将会出现在绘制出的图形左上角,因此,在使用前请更换./class/libchart/images/目录下的PoweredBy.png为工程LOGO,并保持文件名不变。


输出图形的方法有两种,一种是直接输出,一种是在服务器端生成。


直接输出的方法

直接输出的方法即使用PHP发送头方法,将PHP文件做为一个图像文件输出,显示在调用端。示例代码如下:

<?php

include("./class/class.php");

include("./class/libchart/classes/libchart.php");


header("Content-type: image/png"); // 将此页面显示为一个图片

$chart = new PieChart(500, 300); // 设置饼图,图像大小为500x300


$dataSet = new XYDataSet();

$dataSet->addPoint(new Point("人力成本", 50));

$dataSet->addPoint(new Point("设备损耗", 75));

$dataSet->addPoint(new Point("场地租用", 30));

$chart->setDataSet($dataSet);


$chart->setTitle("工程预算比例图,单位-百万元"); // 设置图表标题,可以为中文

$chart->render();

?>

这样绘制出的图形为一饼状图,如下图所示:
(图片已丢失)

这里同时要注意libchart的结构,只要更换$char的对象类型即可更换输出的图形类型,因此,其它图形如柱状图等可在此基础上推导。


在服务器端生成的方法为(以水平柱状图表为例):

<?php

include("./class/class.php");

include("./class/libchart/classes/libchart.php");


$chart = new HorizontalBarChart(600, 170);


$dataSet = new XYDataSet();

$dataSet->addPoint(new Point("/wiki/Im.php", 50));

$dataSet->addPoint(new Point("/wiki/Web_Browser.php", 75));

$dataSet->addPoint(new Point("/wiki/Web.php", 122));

$chart->setDataSet($dataSet);

$chart->getPlot()->setGraphPadding(new Padding(5, 30, 20, 140)); // 设置图标空白,分别为顶,右,下,左


$chart->setTitle("www.example.com网站最多访问页面 "); // 图标标题

$chart->render("generated/demo2.png"); // 输出图形,输出目录必须为可写,Linux上设置为777

?>


<html>

<head>

<title>Libchart horizontal bars demonstration</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />

</head>

<body>

<img alt="Horizontal bars chart" src="generated/demo2.png" style="border: 1px solid gray;"/>

</body>

</html>


输出图形如下图所示:
[php][libchar]使用libchart绘制图表 - Keiyi - Keiyis Redemption


这种方法一定要注意生成目录一定要可写,本例中将文件生成在./generated目录下,在linux系统下将此目录权限设置为777,在windows目录下将其设置为everyone可写。


Libchart几种常用图形设置:

图形样式


libchart类名

饼图


PieChart

水平柱状图


HorizontalBarChart

重直柱状图


VerticalBarChart

折线图


LineChart


这些类的默认的初始化时可以带参数,这个参数用来指定图形大小,也可以不带参数,这时以默认大小生成图形。


libchart可以绘制多维图形,方法是给$char对象添加多个序列,如下边是一个多维垂直柱状图示例:


$chart = new VerticalBarChart();


$serie1 = new XYDataSet();

$serie1->addPoint(new Point("YT", 64));

$serie1->addPoint(new Point("NT", 63));

$serie1->addPoint(new Point("BC", 58));

$serie1->addPoint(new Point("AB", 58));

$serie1->addPoint(new Point("SK", 46));

$serie2 = new XYDataSet();

$serie2->addPoint(new Point("YT", 61));

$serie2->addPoint(new Point("NT", 60));

$serie2->addPoint(new Point("BC", 56));

$serie2->addPoint(new Point("AB", 57));

$serie2->addPoint(new Point("SK", 52));

$dataSet = new XYSeriesDataSet();

$dataSet->addSerie("1990", $serie1);

$dataSet->addSerie("1995", $serie2);

$chart->setDataSet($dataSet);

$chart->getPlot()->setGraphCaptionRatio(0.65);


$chart->setTitle("Average family income (k$)");

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


添加多个序列的方法为,使用XYSeriesDataSet类下的addSerie方法进行添加,添加的对象为一个XYDataSet类对象。其它图形方法与之类似。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值