Jpgraph使用demo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jpgraph使用demo相关的知识,希望对你有一定的参考价值。

<?php

require_once(‘jpgraph-4.0.2/src/jpgraph.php‘);

$ac=‘c‘;

if($ac==‘a‘){
/********************条形图************************/
require_once(‘jpgraph-4.0.2/src/jpgraph_bar.php‘);//条形图的类
//创建图表数据
$xdata = array(‘Mousemats‘, ‘Pens‘, ‘T-Shirts‘, ‘Mugs‘);
$ydata = array(35, 43, 15, 10);

/*创建图形对象,设置尺寸和背景颜色*/
//设置图表宽,高,缓存文件名称
$graph = new Graph(500,400,‘auto‘);
//设置边距
$graph->img->SetMargin(40,20,20,40);
//刻度类型,设置比例 (X 文本比例、Y 线比例)
$graph->SetScale(‘textlin‘);
//设置背景颜色
$graph->SetColor(‘white‘);
//设置外边框背景颜色
$graph->SetmarginColor(‘darkgray‘);
//使用背景阴影
$graph->SetShadow();
//设置框架颜色
$graph->SetFrame(true,‘black‘);

/*设置图形标题*/
//标题文本
$graph->title->Set(‘Sales figures for march‘);
//标题颜色
$graph->title->SetColor(‘white‘);
//标题字体
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);

/*构建x轴*/
//轴标题文本
$graph->xaxis->title->Set(‘Product type‘);
//轴标题颜色
$graph->xaxis->title->SetColor(‘black‘);
//轴标题字体
$graph->xaxis->title->SetFont(FF_VERDANA,FS_BOLD,10);
//设置标志数据(每个数据的标志)
$graph->xaxis->SetTickLabels($xdata);
//轴颜色
$graph->xaxis->SetColor(‘black‘,‘white‘);
//轴字体
$graph->xaxis->SetFont(FF_VERDANA, FS_NORMAL,8);
//隐藏十字叉
$graph->xaxis->HideTicks();

/*构建Y轴*/
//轴标题文本
$graph->yaxis->title->Set(‘Units Sold‘);
//轴标题颜色
$graph->yaxis->title->SetColor(‘black‘);
//轴标题字体
$graph->yaxis->title->SetFont(FF_VERDANA,FS_BOLD,10);
//轴颜色
$graph->yaxis->SetColor(‘black‘,‘white‘);
//轴字体
$graph->yaxis->SetFont(FF_VERDANA, FS_NORMAL,8);
//隐藏十字叉
$graph->yaxis->HideTicks();

/*新建BarPlot对象处理图形中的条状绘制*/
//传入数据实例图表
$bplot = new BarPlot($ydata);
//设置条宽度
$bplot->SetWidth(0.75);
//设置条背景颜色
$bplot->SetFillcolor(‘darkgray‘);

/*将条形图对象添加到图形对象*/
$graph->Add($bplot);
//发送到浏览器
$filename = ‘images/‘.time().‘.png‘;  
$graph->Stroke($filename);
}

if($ac==‘b‘){
/********************饼图***********************/
//图表主类
require_once(‘jpgraph-4.0.2/src/jpgraph_pie.php‘);
require_once(‘jpgraph-4.0.2/src/jpgraph_pie3d.php‘);

//创建图表数据
$xdata = array(‘Mousemats‘,‘Pens‘,‘T-Shirts‘,‘Mugs‘);
$ydata = array(35,43,15,10);

/*创建图形对象*/
//设置图表宽,高,缓存文件名称
$graph = new PieGraph(400,200,‘auto‘);
//设置背景颜色
$graph->SetMarginColor(‘white‘);
//使用背景投影
$graph->SetShadow();
//设置框架颜色
$graph->SetFrame(true,‘black‘);

/*设置图形标题*/
$graph->title->Set(‘March Sales‘);
//标题颜色
$graph->title->SetColor(‘black‘);
//标题字体
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);

/*创建图例标识饼图每部分代表的含义*/
//图例文本颜色
$graph->legend->SetColor(‘black‘);
//图例背景颜色
$graph->legend->SetFillColor(‘gray‘);
//图例方位
$graph->legend->Pos(0.02,0.86);

/*创建三维饼图对象*/
//传入Ydata实例它
$pie = new PiePlot3d($ydata);
//把Xdata传入图例中
$pie->SetLegends($xdata);
//设置颜色主题 (earth|pastel|sand|water)
$pie->SetTheme(‘earth‘);
//设置相对X轴的中心
$pie->SetCenter(0.36);
//设置饼图的半径(单位px)
$pie->SetSize(100);
//设置标题的角度
$pie->SetAngle(30);

/*突出显示两个扇形区*/
//分开成多少片
$pie->ExplodeSlice(2);
//另一个分开成多少片
$pie->ExplodeSlice(3);

/*在图形上每个部分旁显示标识该部分的百分比*/
//设置字体
$pie->value->SetFont(FF_VERDANA,FS_NORMAL,10);
//字体颜色
$pie->value->SetColor(‘black‘);

/*将饼图对象添加到图形对象并发送到浏览器*/
$graph->Add($pie);
$filename = ‘images/‘.time().‘.png‘;  
$graph->Stroke($filename);//输出图像
//可以输入文件名创建文件而不输出
//例:$graph->Stroke(‘humble_pie.png‘);
}


if($ac==‘c‘){
/****************折线图********************/
require_once(‘jpgraph-4.0.2/src/jpgraph_line.php‘); //LinePlot 类  
$aAxisType = ‘intlin‘; //第一个int是X轴类型第2个lin是Y轴类型  
$yScaleMin = 0; //Y轴最小值, 如果不需要设置,可以为空,或者NULL,下同  
$yScaleMax = 11; //Y轴最大值  
$xScaleMin = 1; //X轴最大值  
$xScaleMax = 24; //X轴最大值  
  
$unitType = ‘月份‘;  
  
  $chartDataTmpArr = array(‘1‘ => ‘1‘, ‘2‘ => ‘0‘, ‘3‘ => ‘4‘, ‘4‘ => ‘5‘, ‘5‘ => ‘7‘, ‘6‘ => ‘8‘, ‘7‘ => ‘4‘, ‘8‘ => ‘6‘, ‘9‘ => ‘8‘, ‘10‘ => ‘7‘, ‘11‘ => ‘4‘, ‘12‘ => ‘5‘, ‘13‘ => ‘4‘, ‘14‘ => ‘6‘, ‘15‘ => ‘4‘, ‘16‘ => ‘2‘, ‘17‘ => ‘2‘, ‘18‘ => ‘2‘, ‘19‘ => ‘2‘, ‘20‘ => ‘7‘, ‘21‘ => ‘6‘, ‘22‘ => ‘1‘, ‘23‘ => ‘4‘, ‘24‘ => ‘4‘);  
  
$chartDataTmpArr2 = array(‘1‘ => ‘2‘, ‘2‘ => ‘0‘, ‘3‘ => ‘2‘, ‘4‘ => ‘2‘, ‘5‘ => ‘8‘, ‘6‘ => ‘9‘, ‘7‘ => ‘5‘, ‘8‘ => ‘7‘, ‘9‘ => ‘9‘, ‘10‘ => ‘7‘, ‘11‘ => ‘4‘, ‘12‘ => ‘7‘, ‘13‘ => ‘2‘, ‘14‘ => ‘4‘, ‘15‘ => ‘5‘, ‘16‘ => ‘6‘, ‘17‘ => ‘0‘, ‘18‘ => ‘3‘, ‘19‘ => ‘6‘, ‘20‘ => ‘5‘, ‘21‘ => ‘8‘, ‘22‘ => ‘9‘, ‘23‘ => ‘4‘, ‘24‘ => ‘4‘);  
$graph = new Graph($width = 780 , $height = 400); //创建新的Graph对象  
$graph->SetScale($aAxisType, $yScaleMin, $yScaleMax, $xScaleMin, $xScaleMax); //设置刻度模式SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1)  
  
$graph->img->SetMargin(40, 20, 50, 50) ; //设置图表边界  
$title = date("Y-m-d H:i:s")."统计图";  
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置图表标题的字体类型  
$graph->title->Set(iconv("UTF-8","GB2312//IGNORE",$title));  
$graph->title->SetMargin (20);  
  
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);  
$graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE",$unitType));  
$graph->xaxis->title->SetMargin(14);  
  
$graph->legend->SetLineWeight(2); //设置图例文字的字体   
  
$lineplot = new LinePlot($chartDataTmpArr); //创建要画的一地条曲线的对象  
$lineplot->SetWeight(2); //曲线的线宽  

$lineplot->SetLegend(iconv("UTF-8","GB2312//IGNORE","进入"));//设置图例文字  
$graph->legend->Pos( 0.025, 0.08, "right","center" ); //图例文字框的位置 0.025,0.08 是以右上角为基准的,0.025是距左右距离,0.08是上下距离。
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);
$graph->legend->SetLayout(‘1‘); //如果有两条曲线,他们的图例文字并排放置。  
$graph->legend->SetFrameWeight(0); //图例文字外框边框border设置为0  
$graph->legend->SetFillColor(‘#C8C8C8‘); //图例文字框内的填充颜色  
$graph->legend->SetShadow(‘#C8C8C8‘, 0); //设置图例文字框的阴影部分颜色和border  
$lineplot->SetColor("orange"); //设置曲线颜色  
$graph->Add($lineplot); //在统计图上绘制曲线  
      
$lineplot2 = new LinePlot($chartDataTmpArr2); //创建一条新的曲线对象  
$lineplot2->SetLegend(iconv("UTF-8","GB2312//IGNORE","出去"));  
$lineplot2->SetWeight(2);  
$lineplot2->SetColor("blue");
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);
$graph->Add($lineplot2);  
  
$filename = ‘images/‘.time().‘.png‘;  
$graph->Stroke($filename);  
}

技术分享

技术分享

技术分享





 引入了文件.
    然后写数据.



[php] view plain copy print?

  1. $ydata = array(11,3,8,12,5,1,9,13,5,7);  


设置图表大小.



[php] view plain copy print?

  1. $graph = new Graph(350,250);  


   刻度类型:

[php] view plain copy print?

  1. $graph->SetScale(‘textlin‘);  

  比如强制如此设置.



[php] view plain copy print?

  1. $graph->SetScale(‘textlin‘,0,200);  

技术分享


  注入y轴数据,设置颜色.


[php] view plain copy print?

  1. $lineplot=new LinePlot($ydata);  

  2. $lineplot->SetColor(‘blue‘);  



设置两条也是一个道理的.

[php] view plain copy print?

  1. $lineplot=new LinePlot($ydata);  

  2. $lineplot->SetColor(‘blue‘);  

  3. $slineplot=new LinePlot($sydata);  

  4. $slineplot->SetColor(‘red‘);  

  5.   

  6. $graph->Add($lineplot);  

  7. $graph->Add($slineplot);  


设置图例:


[php] view plain copy print?

  1. $lineplot->SetLegend(‘Label 1‘);  

  2. $slineplot->SetLegend(‘Label 2‘);  



技术分享


解决中文乱码

取前篇的代码片断如下

//设置图表的标题字体、大小
$graph->title->Set("Accumulated&nbsp;bar&nbsp;plots");
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

//和上面标题对应,设置标题的字体和大小
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

把它改为

//设置图表的标题字体、大小
$graph->title->Set(iconv("UTF-8","GB2312//IGNORE","网志博客信息统计表"));
$graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","X-标题"));
$graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","Y-标题"));

//和上面标题对应,设置标题的字体和大小
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

使用php函数据中文由UTF-8转为GB2312,记住由于iconv本身的一个bug,iconv在转换字符"—"到gb2312时会出错,所以在需要转成的编码后加上 "//IGNORE" 。

FF_SIMSUN表示中文简体,对应的字体文件是simsun.ttc,虽然FF_CHINESE和FF_BIG5也表示中文但是它们对应的字体文件是不同的,所以不要弄错。

当然了,我这里只介绍了一种方法,还有一种就是修改源码,但不推荐。因为我觉得改动源码可能会给其它地方带来意想不到的麻烦。


使用JpGraph,要知道其版本、运行服务器以及操作系统的息息,不能张冠李戴,否则麻烦多多。


生成验证码

require_once(‘jpgraph-4.0.2/src/jpgraph_antispam.php‘);
$spam = new AntiSpam();
$chars = $spam->Rand(4);
$spam->Stroke();
$spam->Set(‘my_string‘);//可以自行指定字符串


以上是关于Jpgraph使用demo的主要内容,如果未能解决你的问题,请参考以下文章

PHP制作图表 JpGraph

使用 php 绘制 bargraph-jpgraph

PHP 画图——使用jpgraph画图

“jpgraph”不起作用,html 中没有错误

PHP中使用Jpgraph生成统计图

尝试显示从 Oracle 数据库中选择的数据时出现 JPGraph 轴错误