Jpgraph使用demo
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 = 'p_w_picpaths/'.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 = 'p_w_picpaths/'.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 = 'p_w_picpaths/'.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');//可以自行指定字符串