dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6111|回复: 74

[功能实现] PHP中使用Jpgraph生成统计图

  [复制链接]
  • TA的每日心情

    2024-11-19 20:46
  • 签到天数: 244 天

    [LV.8]以坛为家I

    4434

    主题

    1459

    帖子

    1万

    积分

    会|员

    Rank: 9Rank: 9Rank: 9

    积分
    10734
    发表于 2019-1-14 20:40:52 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    Jpgraph是PHP图表类库,可以生成折线图、柱状图、大饼图等等统计图。如果你想使用PHP生成统计图来统计数据,使用它再方便不过啦。
    如果说你要亲自使用GD库来写的话,那我只能膜拜大神啦(我不会哈哈哈)。
    言归正传,首先你要确定你的PHP已经开启GD库啦,在php.ini配置文件中找到extension=php_gd2.dll确认没有被;注释。那表示已经开启GD库拉。 1141249-20170512141846754-788174849.png

    然后就可以去网上下一个Jpgraph的压缩包啦。解压保存到一个任意文件夹,之后会引用其中的文件,所以最好保存到一个你熟悉的文件夹。
    1)生成折线图
    [PHP] 纯文本查看 复制代码
    <?php  
    
    require_once ("jpgraph/src/jpgraph.php");  
    require_once ("jpgraph/src/jpgraph_line.php");  
       
    $data1 = array(523,634,371,278,685,587,490,256,398,545,367,577); //第一条曲线的数组  
       
    $graph = new Graph(500,300);   
    $graph->SetScale("textlin");  
    $graph->SetShadow();     
    $graph->img->SetMargin(60,30,30,70); //设置图像边距  
       
    $graph->graph_theme = null; //设置主题为null,否则value->Show(); 无效  
       
    $lineplot1=new LinePlot($data1); //创建设置两条曲线对象  
    $lineplot1->value->SetColor("red");  
    $lineplot1->value->Show();  
    $graph->Add($lineplot1);  //将曲线放置到图像上  
       
    $graph->title->Set(iconv("UTF-8","GB2312//IGNORE","网志博客信息统计表"));   //设置图像标题  
    $graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","月份")); //设置坐标轴名称  
    $graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","流量"));  
    $graph->title->SetMargin(10);  
    $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());
    //$graph->Stroke();  //输出图像  
    
     $gdimg = $graph->Stroke(_IMG_HANDLER);
     $filename = "./test.png";
     $graph->img->Stream($filename);//将生成的图片保存到本地

    效果如图
    1141249-20170512142741488-378121281.png

    2)柱状图
    [PHP] 纯文本查看 复制代码
    <?php  
    require_once ("jpgraph/jpgraph.php");  
    require_once ("jpgraph/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); //设置边距  
      
    $graph->graph_theme = null; //设置主题为null,否则value->Show(); 无效  
      
    $barplot = new BarPlot($data);  //创建BarPlot对象  
    $barplot->SetFillColor('blue'); //设置颜色  
    $barplot->value->Show(); //设置显示数字  
    $graph->Add($barplot);  //将柱形图添加到图像中  
       
    $graph->title->Set("CDN流量图");   
    $graph->xaxis->title->Set("月份"); //设置标题和X-Y轴标题  
    $graph->yaxis->title->Set("流 量(Mbits)");                                                                        
    $graph->title->SetColor("red");  
    $graph->title->SetMargin(10);  
    $graph->xaxis->title->SetMargin(5);  
    $graph->xaxis->SetTickLabels($ydata);  
       
    $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();

    效果如图
    1141249-20170512143159988-1795555915.png

    3)大饼图
    [PHP] 纯文本查看 复制代码
    require_once ("jpgraph/src/jpgraph.php");  
    require_once ("jpgraph/src/jpgraph_pie.php");  
    require_once ("jpgraph/src/jpgraph_pie3d.php");  
       
    $data = array(19,23,34,38,45,67,71,78,85,87,90,96);  
       
    $graph = new PieGraph(550,500);  
    $graph->SetShadow();  
       
    $graph->title->Set("CDN流量比例");  
    $graph->title->SetFont(FF_SIMSUN,FS_BOLD);  
       
    $pieplot = new PiePlot3D($data);  //创建PiePlot3D对象  
    $pieplot->SetCenter(0.4, 0.5); //设置饼图中心的位置  
    $pieplot->SetLegends($gDateLocale->GetShortMonth()); //设置图例  
      
    $graph->Add($pieplot);  
    $graph->Stroke();

    效果如图
    1141249-20170512143406301-1285568007.png

    不知道各位看官发现没有,貌似柱状图和大饼图的文字不是正常的中文。折线图倒是正确的,这是因为Jpgraph默认把字符串转换为UTF8格式的,如果你的文件php文件本身就是UTF8格式那么久相当于转换了2次,所以产生了乱码。
    这里就要用到转换编码方式  iconv("UTF-8","gb2312",$x);需要先把汉字编码转化为gb2312,这样汉字才能正常显示。参考第一段代码写法就行。




    回复

    使用道具 举报

    该用户从未签到

    40

    主题

    7912

    帖子

    1004

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1004

    发表于 2019-1-15 00:10:58 | 显示全部楼层
    珍惜生命,果断回帖。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37

    主题

    7917

    帖子

    1069

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1069

    发表于 2019-1-15 16:51:13 | 显示全部楼层
    相当不错,感谢无私分享精神!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    94

    主题

    8057

    帖子

    1006

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1006

    发表于 2019-1-16 00:39:39 | 显示全部楼层
    小手一抖,钱钱到手!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    46

    主题

    7983

    帖子

    1079

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1079

    发表于 2019-1-16 19:21:43 | 显示全部楼层
    么有分,谁能送我点积分啊::>_<::
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24

    主题

    7885

    帖子

    962

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    962

    发表于 2019-1-17 10:19:49 | 显示全部楼层
    看帖回帖是美德!:lol
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    7985

    帖子

    1042

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1042

    发表于 2019-1-18 14:26:44 | 显示全部楼层
    有竞争才有进步嘛
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    3481

    帖子

    4

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    4

    发表于 2019-1-19 17:52:58 | 显示全部楼层
    路过,支持一下啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    7817

    帖子

    974

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    974

    发表于 2019-1-21 15:22:10 | 显示全部楼层
    有竞争才有进步嘛
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29

    主题

    7878

    帖子

    1075

    积分

    终身会员[A]

    Rank: 7Rank: 7Rank: 7

    积分
    1075

    发表于 2019-1-21 16:00:52 | 显示全部楼层
    谢谢楼主,共同发展
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2024-12-24 00:15 , Processed in 0.088963 second(s), 44 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表