下载
在官方网站
http://www.aditus.nu/jpgraph/ 下载jpgraph,其中1.X系列是用于PHP4的,2.X系列是用于PHP5的。
安装
将下载的得到的jpgraph压缩文件解压至相应的路径。
配置
首先需要注意的是:要想适用jpgraph,你的PHP必须开启了GD2扩展。
在jpgraph.php中有以下这样一段代码是设置字体文件路径的
if (!defined('TTF_DIR')) {
首先需要注意的是:要想适用jpgraph,你的PHP必须开启了GD2扩展。
在jpgraph.php中有以下这样一段代码是设置字体文件路径的
if (!defined('TTF_DIR')) {
if (strstr( PHP_OS, 'WIN') ) {
$sroot = getenv('SystemRoot');
if( empty($sroot) ) {
$t = new ErrMsgText();
$msg = $t->Get(12,$file,$lineno);
die($msg);
}
else {
define('TTF_DIR', $sroot.'/fonts/');
}
} else {
define('TTF_DIR','/usr/share/fonts/truetype/');ç (我的作法是将windows下的fonts文件夹下的字体全部COPY到/usr/local/fonts/truetype)
}
}
要支持中文需要用到simhei.ttf和simsun.ttc这两个字体,在使用中文的时候需要使用SetFont(FF_SIMSUN,FS_BOLD)设置字体。
如果你的文件编码为utf-8,修改方法如下:
代码:
方法一,在程序中修改
$title="流量图";
$title = iconv("UTF-8", "gb2312", $title);
$graph->title->Set($title);
方法二,修改源文件jpgraph_ttf.inc.php
在第99-106行,改成下面这样子
elseif( $aFF === FF_SIMSUN ) {
// Do Chinese conversion
/*
if( $this->g2312 == null ) {
include_once 'jpgraph_gb2312.php' ;
$this->g2312 = new GB2312toUTF8();
}
return
$this->g2312->gb2utf8($aTxt);
*/
return $aTxt;
}
如果你的文件编码为utf-8,修改方法如下:
代码:
方法一,在程序中修改
$title="流量图";
$title = iconv("UTF-8", "gb2312", $title);
$graph->title->Set($title);
方法二,修改源文件jpgraph_ttf.inc.php
在第99-106行,改成下面这样子
elseif( $aFF === FF_SIMSUN ) {
// Do Chinese conversion
/*
if( $this->g2312 == null ) {
include_once 'jpgraph_gb2312.php' ;
$this->g2312 = new GB2312toUTF8();
}
return
$this->g2312->gb2utf8($aTxt);
*/
return $aTxt;
}
jpgraph默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示。
这样的话,如果你的文件编码是gb2312,SetFont方法的第一个参数为FF_SIMSUN即可。
如果你是utf-8编码你还需要先把汉字编码转化为gb2312,这样你的汉字才可以正常显示。
使用
可以参照jpgraph-2.3.4\src\Examples中的例子。下面是一些常用的:
$graph->title->Set(‘设置图表的标题’);
$graph->xaxis->title->Set("设置X轴的标题");
$graph->yaxis->title->Set("设置Y轴的标题");
//设置字体 如果是中文,第一个参数一般设置为FF_SIMSUN
SetFont(FF_SIMSUN,FS_BOLD,14);
//如设置图表标题的字体
$graph->title->SetFont(FF_SIMSUN,FS_BOLD,14);
//设置颜色
SetColor('red');
Example:
例1. php Jpgraph绘制简单的X-Y坐标图
<?php
include ("../jpgraph.php");
include ("../jpgraph_line.php");
//将要用于图表创建的数据存放在数组中
$data =
array(19,23,34,38,45,67,71,78,85,90,96,145);
array(19,23,34,38,45,67,71,78,85,90,96,145);
$graph = new Graph(500,300); //创建新的Graph对象
$graph->SetScale("textlin");
//设置刻度样式
//设置刻度样式
$graph->img->SetMargin(30,30,80,30); //设置图表边界
$graph->title->Set("CDN Traffic
Total"); //设置图表标题
Total"); //设置图表标题
$graph->title->SetColor("blue");
$graph->title->SetMargin(20);
// Create the linear plot
$lineplot=new LinePlot($data); // 创建新的LinePlot对象
$lineplot->SetLegend("Line(Mbits)"); //设置图例文字
$lineplot->SetColor("red"); // 设置曲线的颜色
// Add the plot to the graph
$graph->Add($lineplot); //在统计图上绘制曲线
// Display the graph
$graph->Stroke(); //输出图像
?>
例2. php Jpgraph绘制复杂的X-Y坐标图
<?php
include ("../jpgraph.php");
include ("../jpgraph_line.php");
$data1 =
array(523,634,371,278,685,587,490,256,398,545,367,577); //第一条曲线的数组
array(523,634,371,278,685,587,490,256,398,545,367,577); //第一条曲线的数组
$data2 =
array(19,23,34,38,45,67,71,78,85,87,90,96); //第二条曲线的数组
array(19,23,34,38,45,67,71,78,85,87,90,96); //第二条曲线的数组
$graph = new Graph(500,300,auto);
//创建新的Graph对象
//创建新的Graph对象
$graph->SetScale("textlin");
$graph->SetShadow(); //设置图像的阴影样式
$graph->img->SetMargin(60,30,30,70); //设置图像边距
$graph->title->Set("CDN流量图");
//设置图像标题
//设置图像标题
$graph->title->SetMargin(10);
$lineplot1=new LinePlot($data1);
//创建设置两条曲线对象
//创建设置两条曲线对象
$lineplot2=new LinePlot($data2);
$lineplot1->value->Show();
$lineplot1->value->SetColor("black");
$graph->Add($lineplot1);
//将曲线放置到图像上
//将曲线放置到图像上
$graph->Add($lineplot2);
$graph->xaxis->title->Set("月份");
//设置坐标轴名称
//设置坐标轴名称
$graph->yaxis->title->Set("流 量(Gbits)");
$graph->xaxis->title->SetMargin(10);
$graph->yaxis->title->SetMargin(10);
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
//设置字体
//设置字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->SetTickLabels($gDateLocale->GetShortMonth());
$lineplot1->SetColor("red");
//设置颜色
//设置颜色
$lineplot2->SetColor("blue");
$lineplot1->SetLegend("Max"); //设置图例名称
$lineplot2->SetLegend("Min");
$graph->legend->SetLayout(LEGEND_HOR);
//设置图例样式和位置
//设置图例样式和位置
$graph->legend->Pos(0.5,0.96,"center","bottom");
$graph->Stroke();
//输出图像
//输出图像
?>
例3. php Jpgraph绘制柱形图
<?php
include
("../jpgraph.php");
("../jpgraph.php");
include
("../jpgraph_bar.php");
("../jpgraph_bar.php");
$data =
array(19,23,34,38,45,67,71,78,85,87,96,145); //定义数组
array(19,23,34,38,45,67,71,78,85,87,96,145); //定义数组
$ydata =
array("一","二","三","四","五","六","七","八","九","十","十一","十二");
array("一","二","三","四","五","六","七","八","九","十","十一","十二");
$graph = new
Graph(500,300);
//创建新的Graph对象
Graph(500,300);
//创建新的Graph对象
$graph->SetScale("textlin");
$graph->SetShadow(); //设置阴影
$graph->img->SetMargin(40,30,40,50); //设置边距
$barplot =
new BarPlot($data); //创建BarPlot对象
new BarPlot($data); //创建BarPlot对象
$barplot->SetFillColor('blue'); //设置颜色
$barplot->value->Show();
//设置显示数字
//设置显示数字
$graph->Add($barplot);
//将柱形图添加到图像中
//将柱形图添加到图像中
$graph->title->Set("CDN流量图");
//设置标题和X-Y轴标题
//设置标题和X-Y轴标题
$graph->title->SetColor("red");
$graph->title->SetMargin(10);
$graph->xaxis->title->Set("月份");
$graph->xaxis->title->SetMargin(5);
$graph->xaxis->SetTickLabels($ydata);
$graph->yaxis->title->Set("流 量(Mbits)");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD);
$graph->Stroke();
?>
例4. php Jpgraph绘制饼图
<?php
include ("../jpgraph.php");
include ("../jpgraph_pie.php");
$data =
array(19,23,34,38,45,67,71,78,85,87,90,96);
array(19,23,34,38,45,67,71,78,85,87,90,96);
$lable_data = range(1,12);
$graph = new PieGraph(400,300);
$graph->SetShadow();
$graph->title->Set("CDN流量比例");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$pieplot = new PiePlot($data);
$pieplot->SetLegends($lable_data);
$pieplot->SetCenter(0.4);
$graph->Add($pieplot);
$graph->Stroke();
?>
例5. php Jpgraph绘制3D饼图
<?php
include ("../jpgraph.php");
include ("../jpgraph_pie.php");
include ("../jpgraph_pie3d.php");
$data = array(19,23,34,38,45,67,71,78,85,87,90,96);
$graph = new PieGraph(550,400);
$graph->SetShadow();
$graph->title->Set("CDN流量比例");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$pieplot = new PiePlot3D($data);
//创建PiePlot3D对象
//创建PiePlot3D对象
$pieplot->SetCenter(0.4);
//设
//设
置饼图中心的位置
$pieplot->SetLegends($gDateLocale->GetShortMonth()); //设置图例
$graph->Add($pieplot);
$graph->Stroke();
?>
例6.
index.html
<html>
<head>
<title>CDN流量查询系统统计</title>
<meta
http-equiv="Content-Type" content="text/html;
charset=gb2312">
http-equiv="Content-Type" content="text/html;
charset=gb2312">
<mce:style
type="text/css"><!--
type="text/css"><!--
.style1 {
font-size:
16px;
16px;
font-weight:
bold;
bold;
}
--></mce:style><style
type="text/css" mce_bogus="1">.style1 {
type="text/css" mce_bogus="1">.style1 {
font-size:
16px;
16px;
font-weight:
bold;
bold;
}</style>
</head>
<body>
<form name="form1"
method="get" action="result.php">
method="get" action="result.php">
<p align="center" class="style1"> CDN流量查询系统统计</p>
<table width="300" border="1"
align="center" cellpadding="3"
cellspacing="3">
<tr>
<td width="85"><strong>查询年份</strong></td>
<td
width="188"><select name="acct_yr"
id="acct_yr">
width="188"><select name="acct_yr"
id="acct_yr">
<option value="2009"
selected>2008</option>
selected>2008</option>
<option value="2009"
selected>2009</option>
selected>2009</option>
</select></td>
</tr>
<tr>
<td><strong>起始月份</strong></td>
<td><select name="start_mth"
id="start_mth">
<option selected>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select></td>
</tr>
<tr>
<td><strong>终止月份</strong></td>
<td><select name="end_mth" id="end_mth">
<option >01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option selected >12</option>
</select></td>
</tr>
<tr>
<td><strong>统计图类别</strong></td>
<td><select name="graph" id="graph">
<option value="1" selected>线型图</option>
<option value="2">柱形图</option>
<option value="3">饼图</option>
<option value="4">3D饼图</option>
</select></td>
</tr>
</table>
<p align="center">
<input type="submit" value="Submit">
<input type="reset" name="Submit2"
value="Reset">
</p>
</form>
</body>
</html>
result.php
<?php
include ("../jpgraph.php");
include ("../jpgraph_line.php");
include ("../jpgraph_bar.php");
include ("../jpgraph_pie.php");
include ("../jpgraph_pie3d.php");
$conn =
mysql_connect("localhost", "root",
"woxiangnileyali"); //连接数据库
mysql_connect("localhost", "root",
"woxiangnileyali"); //连接数据库
$acct_yr = $_GET['acct_yr']; //获取年份
$start_mth = $_GET['start_mth']; //获取超始月份
$end_mth = $_GET['end_mth']; //获取结束月份
$choose = $_GET['graph']; //获取图形类型
mysql_select_db("test", $conn); //执行SQL, 获得销量值
$query_rs_prod = "SELECT acct_mth,
amount FROM traffic WHERE acct_yr = '$acct_yr' and acct_mth between
'$start_mth' and '$end_mth'";
amount FROM traffic WHERE acct_yr = '$acct_yr' and acct_mth between
'$start_mth' and '$end_mth'";
$rs_prod = mysql_query($query_rs_prod,
$conn) or die(mysql_error());
$conn) or die(mysql_error());
$row_rs_prod = mysql_fetch_assoc($rs_prod);
$totalRows_rs_prod = mysql_num_rows($rs_prod);
$data = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0); //初始化数组
0, 0); //初始化数组
do
//循环设置各月份数值
//循环设置各月份数值
{
$i
= (int)$row_rs_prod['acct_mth']-1;
= (int)$row_rs_prod['acct_mth']-1;
$data[$i]
= $row_rs_prod['amount'];
= $row_rs_prod['amount'];
} while($row_rs_prod =
mysql_fetch_assoc($rs_prod));
mysql_fetch_assoc($rs_prod));
switch($choose)
{
case
1:
1:
$graph
= new Graph(400,300); //创建新的Graph对象
= new Graph(400,300); //创建新的Graph对象
$graph->SetScale("textlin"); //设置刻度样式
$graph->img->SetMargin(30,30,80,30); //设置图表边界
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置字体
$graph->title->Set("CDN流量查询"); //设置图表标题
$lineplot=new
LinePlot($data);
LinePlot($data);
$lineplot->SetLegend("Line");
$lineplot->SetColor("red");
$graph->Add($lineplot);
break;
case
2:
2:
$graph
= new Graph(400,300);
= new Graph(400,300);
$graph->SetScale("textlin");
$graph->SetShadow();
$graph->img->SetMargin(40,30,20,40);
$barplot
= new BarPlot($data); //创建BarPlot对象
= new BarPlot($data); //创建BarPlot对象
$barplot->SetFillColor('blue'); //设置颜色
$barplot->value->Show(); //设置显示数字
$graph->Add($barplot); //将柱形图添加到图像中
$graph->title->Set("CDN流量查询"); //设置标题和X-Y轴标题
$graph->xaxis->title->Set("月份");
$graph->yaxis->title->Set("流 量(Gbits)");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
break;
case
3:
3:
$graph
= new PieGraph(400,300);
= new PieGraph(400,300);
$graph->SetShadow();
$graph->title->Set("CDN流量查询");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$pieplot
= new PiePlot($data);
= new PiePlot($data);
$pieplot->SetLegends($gDateLocale->GetShortMonth()); //设置图例
$graph->Add($pieplot);
break;
case
4:
4:
$graph
= new PieGraph(400,300);
= new PieGraph(400,300);
$graph->SetShadow();
$graph->title->Set("CDN流量查询");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$pieplot
= new PiePlot3D($data); //创建PiePlot3D对象
= new PiePlot3D($data); //创建PiePlot3D对象
$pieplot->SetCenter(0.4); //设置饼图中心的位置
$pieplot->SetLegends($gDateLocale->GetShortMonth()); //设置图例
$graph->Add($pieplot);
break;
default:
echo
"graph参数错误";
"graph参数错误";
exit;
}
$graph->Stroke();
?>
本文出自 “坏男孩” 博客,请务必保留此出处http://5ydycm.blog.51cto.com/115934/177498