jpgraph 实例文档

下载
在官方网站  http://www.aditus.nu/jpgraph/  下载 jpgraph ,其中 1.X 系列是用于 PHP4 的, 2.X 系列是用于 PHP5 的。

安装
将下载的得到的 jpgraph 压缩文件解压至相应的路径。
 

配置
首先需要注意的是:要想适用 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;
    }

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);
 

$graph = new Graph(500,300);                                                    // 创建新的 Graph 对象
$graph->SetScale("textlin");                                                    // 设置刻度样式
$graph->img->SetMargin(30,30,80,30);                    // 设置图表边界
$graph->title->Set("CDN Traffic 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);                // 第一条曲线的数组
$data2 = array(19,23,34,38,45,67,71,78,85,87,90,96);                                    // 第二条曲线的数组
 

$graph = new Graph(500,300,auto);                                                                               // 创建新的 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");
include ("../jpgraph_bar.php");
 

$data = array(19,23,34,38,45,67,71,78,85,87,96,145);         // 定义数组
$ydata = array(" "," "," "," "," "," "," "," "," "," "," 十一 "," 十二 ");
$graph = new Graph(500,300);                                // 创建新的 Graph 对象
$graph->SetScale("textlin");
 

$graph->SetShadow();                                       // 设置阴影
$graph->img->SetMargin(40,30,40,50);                        // 设置边距
$barplot = new BarPlot($data);                                                          // 创建 BarPlot 对象
$barplot->SetFillColor('blue');                                                         // 设置颜色
$barplot->value->Show();                                                                                        // 设置显示数字
$graph->Add($barplot);                                                                                       // 将柱形图添加到图像中
 

$graph->title->Set("CDN 流量图 ");                                                                        // 设置标题和 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);
$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 对象
$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">
<mce:style type="text/css"><!--
.style1 {
       font-size: 16px;
       font-weight: bold;
}
--></mce:style><style type="text/css" mce_bogus="1">.style1 {
       font-size: 16px;
       font-weight: bold;
}</style>
</head>
 

<body>
<form name="form1" 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">
  <option value="2009" selected>2008</option>
        <option value="2009" 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");         // 连接数据库
 

$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'";
$rs_prod = mysql_query($query_rs_prod, $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);                   // 初始化数组
do                                                                                                                                                                            // 循环设置各月份数值
{
       $i = (int)$row_rs_prod['acct_mth']-1;
       $data[$i] = $row_rs_prod['amount'];
} while($row_rs_prod = mysql_fetch_assoc($rs_prod));
 

 

switch($choose)
{
       case 1:
              $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->SetLegend("Line");
              $lineplot->SetColor("red");
              $graph->Add($lineplot);
              break;
       case 2:
              $graph = new Graph(400,300);    
              $graph->SetScale("textlin");         
              $graph->SetShadow();         
              $graph->img->SetMargin(40,30,20,40);
              $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:
              $graph = new PieGraph(400,300);
              $graph->SetShadow();
             
              $graph->title->Set("CDN 流量查询 ");
              $graph->title->SetFont(FF_SIMSUN,FS_BOLD);
              $pieplot = new PiePlot($data);
              $pieplot->SetLegends($gDateLocale->GetShortMonth());          // 设置图例
              $graph->Add($pieplot);
              break;
       case 4:
              $graph = new PieGraph(400,300);
              $graph->SetShadow();
             
              $graph->title->Set("CDN 流量查询 ");
              $graph->title->SetFont(FF_SIMSUN,FS_BOLD);
              $pieplot = new PiePlot3D($data);                                                          // 创建 PiePlot3D 对象
              $pieplot->SetCenter(0.4);                                                                                          // 设置饼图中心的位置
              $pieplot->SetLegends($gDateLocale->GetShortMonth());          // 设置图例
              $graph->Add($pieplot);
              break;
       default:
              echo "graph 参数错误 ";
              exit;
}
$graph->Stroke();
?>
 

 








本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/177498,如需转载请自行联系原作者
jpgraph是一款强大的PHP图形库,用于生成各种图表。下面是一个实例代码,演示如何使用jpgraph生成多条拆线图: ```php <?php // 引入jpgraph库文件 require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_line.php'); // 创建一个新的图形实例 $graph = new Graph(600, 400); // 设置图形的标题和字体 $graph->title->Set("多条拆线图"); $graph->title->SetFont(FF_SIMSUN, FS_BOLD, 14); // 从数据库中获取数据 $data1 = array(5, 12, 15, 8, 20); $data2 = array(10, 15, 7, 14, 18); $data3 = array(2, 13, 9, 7, 16); // 创建一个拆线图实例 $lineplot1 = new LinePlot($data1); $lineplot2 = new LinePlot($data2); $lineplot3 = new LinePlot($data3); // 设置拆线图的颜色和样式 $lineplot1->SetColor('blue'); $lineplot2->SetColor('red'); $lineplot3->SetColor('green'); $lineplot1->SetWeight(2); $lineplot2->SetWeight(2); $lineplot3->SetWeight(2); // 将拆线图添加到图形中 $graph->Add($lineplot1); $graph->Add($lineplot2); $graph->Add($lineplot3); // 设置图形的X轴和Y轴标签 $graph->xaxis->title->Set("X轴"); $graph->yaxis->title->Set("Y轴"); // 设置图形的背景颜色和边框 $graph->SetMargin(40, 40, 40, 40); $graph->SetShadow(); $graph->SetScale('textlin'); // 生成图形并输出到浏览器 $graph->Stroke(); ?> ``` 以上代码使用jpgraph库创建了一个600x400像素的图形实例,标题为"多条拆线图"。然后从数据库中获取了三组数据data1、data2和data3。创建了相应的拆线图实例,并设置了颜色和样式。最后将拆线图添加到图形中,设置了X轴和Y轴的标签。通过调用`$graph->Stroke()`方法生成图形并输出到浏览器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值