zoukankan      html  css  js  c++  java
  • JpGraph使用详解http://5ydycm.blog.51cto.com/115934/177498 http://www.cnblogs.com/txw1958/archive/2013/08/18/php-charts.html

    下载
    在官方网站 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.4srcExamples中的例子。下面是一些常用的:
    $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();
    ?>
     
     





     
     
     
     

    本文出自 “坏男孩” 博客,请务必保留此出处http://5ydycm.blog.51cto.com/115934/177498

  • 相关阅读:
    WPF 中依赖属性的继承(Inherits)
    使用FluentValidation来进行数据有效性验证
    使用ASP.Net WebAPI构建REST服务(六)——Self-Host
    使用ASP.Net WebAPI构建REST服务(五)——客户端
    使用ASP.Net WebAPI构建REST服务(四)——参数绑定
    使用ASP.Net WebAPI构建REST服务(三)——返回值
    使用ASP.Net WebAPI构建REST服务(二)——路由
    使用ASP.Net WebAPI构建REST服务(一)——简单的示例
    WPF在代码中创建DataTemplate时候的异常
    一个简单的WeakList的实现
  • 原文地址:https://www.cnblogs.com/caicaizi/p/5104523.html
Copyright © 2011-2022 走看看