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?
$ydata = array(11,3,8,12,5,1,9,13,5,7);
设置图表大小.
[php] view plain copy print?
$graph = new Graph(350,250);
刻度类型:
[php] view plain copy print?
$graph->SetScale(‘textlin‘);
比如强制如此设置.
[php] view plain copy print?
$graph->SetScale(‘textlin‘,0,200);
注入y轴数据,设置颜色.
[php] view plain copy print?
$lineplot=new LinePlot($ydata);
$lineplot->SetColor(‘blue‘);
设置两条也是一个道理的.
[php] view plain copy print?
$lineplot=new LinePlot($ydata);
$lineplot->SetColor(‘blue‘);
$slineplot=new LinePlot($sydata);
$slineplot->SetColor(‘red‘);
$graph->Add($lineplot);
$graph->Add($slineplot);
设置图例:
[php] view plain copy print?
$lineplot->SetLegend(‘Label 1‘);
$slineplot->SetLegend(‘Label 2‘);
解决中文乱码
取前篇的代码片断如下
//设置图表的标题字体、大小 $graph->title->Set("Accumulated bar 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的主要内容,如果未能解决你的问题,请参考以下文章