千家信息网

Jpgraph使用demo

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,
千家信息网最后更新 2026年11月01日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?

  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. $graph->Add($lineplot);

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


设置图例:


[php] view plain copy print?

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

  2. $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');//可以自行指定字符串


标题 颜色 字体 图例 对象 图表 UTF-8 图形 文字 背景 数据 文件 曲线 大小 文本 类型 部分 中文 最大 刻度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 互联网科技官网 金融科技与互联网金融 互联网科技公司电话 互联网与新科技 中国互联网科技发展 互联网科技论文 互联网科技公司名称 北京华百购互联网科技有限公司 移动互联网科技股 互联网科技公司有风险吗 开一家科技互联网公司需要多少钱 广西互联网科技孵化中心 深圳艾果互联网通讯科技 上海科技产业互联网平台 梅州GM互联网络科技有限公司 易企秀互联网科技是做什么的 互联网科技企业商标注意事项 长沙渺峰互联网科技有限公司 承德科技产业互联网平台 保险科技 互联网保险 河南云网互联网络科技有限公司 广州紫鲸互联网科技有限公司 蓝思科技飞鸽互联网 科技互联网技术 互联网科技公司有哪些 晓花互联网科技有限公司网址 黑科技 体验场景 互联网大会 图游互联网科技 互联网科技创业计划的风险分析
0