JpGraph在PHP中的详细教程
一、JpGraph简介
概述
JpGraph是一种专门用于绘制统计图的运行库。使用JpGraph创建统计图时,只需要给出相应的数据,设置好统计图的标题和类型,即可快速生成所需的图表样式。它支持生成X-Y坐标图、X-Y-Y坐标图、柱形图、饼图、3D饼图等多种统计图,并会自动生成坐标轴、坐标轴刻度、图例等信息。
特点
面向对象的图像绘制库,封装了GD2函数库中的函数,简化了统计图的生成过程。
支持多种图表类型,满足不同需求。
自动生成坐标轴、坐标轴刻度、图例等信息,节省开发时间。
提供了丰富的配置选项,可以自定义图表的外观和样式。
二、JpGraph的安装和配置
下载和安装
JpGraph的下载地址是:https://jpgraph.net/download/。下载后,将解压得到的src文件夹拷贝到项目文件夹中即可使用。
环境要求
JpGraph需要GD库支持。如果GD库未安装,需要先安装GD库。
三、JpGraph的基本使用
引入类库
使用JpGraph前,需要先引入相关的类库文件。例如,生成柱形图需要引入jpgraph.php和jpgraph_bar.php,生成线性图需要引入jpgraph.php和jpgraph_line.php。
php复制代码
include("src/jpgraph.php"); include("src/jpgraph_bar.php"); // 生成柱形图时引入 include("src/jpgraph_line.php"); // 生成线性图时引入 创建画布
使用Graph类创建一个画布对象,设置画布的大小和背景颜色等属性。
php复制代码
$graph = new Graph(400, 200, "auto"); // 创建一个400x200的画布 $graph->SetScale("textlin"); // 设置坐标轴刻度类型 设置标题和图例
使用title和legend属性设置图表的标题和图例。
php复制代码
$graph->title->Set("测试图表"); // 设置标题 $graph->title->SetFont(FF_FONT1, FS_BOLD); // 设置标题字体样式 $graph->legend->Pos(0.05, 0.5, "right", "center"); // 设置图例位置 $graph->legend->SetShadow('darkgray@0.1'); // 设置图例阴影 $graph->legend->SetFillColor('lightblue@0.3'); // 设置图例填充颜色 设置坐标轴
使用xaxis和yaxis属性设置坐标轴的标题、字体、颜色等属性。
php复制代码
$graph->xaxis->SetTickLabels($label_x); // 设置X轴刻度标签 $graph->xaxis->SetLabelAngle(30); // 设置X轴刻度标签角度 $graph->xaxis->title->Set('Year 2006'); // 设置X轴标题 $graph->xaxis->title->SetFont(FF_FONT1, FS_BOLD); // 设置X轴标题字体样式 $graph->xaxis->title->SetColor('white'); // 设置X轴标题颜色 $graph->xaxis->SetFont(FF_FONT1, FS_BOLD); // 设置X轴字体样式 $graph->xaxis->SetColor('yellow'); // 设置X轴颜色 $graph->yaxis->SetFont(FF_FONT1, FS_BOLD); // 设置Y轴字体样式 $graph->yaxis->SetColor('yellow'); // 设置Y轴颜色 设置数据
根据图表类型,设置相应的数据。例如,生成柱形图时,需要设置柱形图的数据数组;生成线性图时,需要设置线性图的数据数组。
php复制代码
$datay1 = array(10, 20, 30, 40, 50); // 柱形图数据1 $datay2 = array(15, 25, 35, 45, 55); // 柱形图数据2 $bplot1 = new BarPlot($datay1); // 创建柱形图对象1 $bplot2 = new BarPlot($datay2); // 创建柱形图对象2 $bplot1->SetFillColor('orange@0.4'); // 设置柱形图填充颜色1 $bplot2->SetFillColor('brown@0.4'); // 设置柱形图填充颜色2 $bplot1->SetLegend('Label 1'); // 设置柱形图图例1 $bplot2->SetLegend('Label 2'); // 设置柱形图图例2 $gbarplot = new GroupBarPlot(array($bplot1, $bplot2)); // 创建组合柱形图对象 $gbarplot->SetWidth(0.9); // 设置柱形图宽度 $graph->Add($gbarplot); // 将柱形图添加到画布上 生成图表
使用Stroke方法生成图表,并输出到浏览器或保存为图片文件。
php复制代码
$graph->Stroke(); // 生成图表并输出到浏览器 //graph $->Stroke('./test.png'); // 生成图表并保存为图片文件、
设置 标题```、
图
例####、 四坐标、轴J等pGrap属性h。的
详细属性和方法
Graph类
Graph类是JpGraph的核心类,用于创建画布
$aColor
:$lmargin
、$rmargin
、$tmargin
、$bmargin
:左、右、上、下边距。$aBrght
:亮度调整。$aContr
:对比度调整。$aAngle
:背景图片角度。$imgfile
:背景图片文件路径。$aFlag
:填充方式。xaxis->SetTickLabels($labels)
:设置X轴刻度标签。xaxis->SetLabelAngle($angle)
:设置X轴刻度标签角度。xaxis->title->Set($title)
:设置X轴标题。xaxis->title->SetFont($ffamily, $fstyle, $fsize)
:设置X轴标题字体样式。xaxis->title->SetColor($color)
:设置X轴标题颜色。xaxis->SetFont($ffamily, $fstyle)
:设置X轴字体样式。xaxis->SetColor($color)
:设置X轴颜色。yaxis->SetFont($ffamily, $fstyle)
:设置Y轴字体样式。yaxis->SetColor($color)
:设置Y轴颜色。$color
:填充颜色。$color
:阴影颜色。$x
、$y
:图例位置。$halign
、$valign
:图例对齐方式。$margin
:标题边距。$ffamily
:字体家族。$fstyle
:字体样式。$fsize
:字体大小。$title
:图表标题。$width
:画布宽度。$height
:画布高度。$autofit
:是否自动调整画布大小以适应内容。构造函数:
Graph($width, $height, $autofit=true)
设置标题:
title->Set($title)
设置标题字体样式:
title->SetFont($ffamily, $fstyle, $fsize)
设置标题边距:
title->SetMargin($margin)
设置图例:
legend->Pos($x, $y, $halign, $valign)
设置图例阴影:
legend->SetShadow($color)
设置图例填充颜色:
legend->SetFillColor($color)
设置坐标轴:
设置背景图片:
SetBackgroundImage($imgfile, $aFlag=BGIMG_FILLPLOT)
设置背景图片角度:
img->SetAngle($aAngle)
设置背景图片对比度:
AdjBackgroundImage($aBrght=0, $aContr=0)
设置投影:
SetShadow()
设置图像边距:
img->SetMargin($lmargin, $rmargin, $tmargin, $bmargin)
设置图像颜色:
SetMarginColor($aColor)
当然,除了之前提到的例子,这里还有一些使用PHP和JpGraph创建不同类型数据可视化图表的示例。
示例一:创建折线图
准备数据:
php复制代码
$month = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); $sales = array(50, 150, 200, 180, 250, 300, 350, 400, 480, 500, 550, 650);
创建折线图:
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_line.php');
// 创建图表对象 $graph = new Graph(600, 400); $graph->SetScale("textlin"); $graph->SetShadow(); $graph->SetMarginColor('white'); $graph->title->Set("Monthly Sales"); $graph->xaxis->title->Set("Month"); $graph->yaxis->title->Set("Sales"); $graph->xaxis->SetTickLabels($month);
// 创建折线图对象并设置数据 $lineplot = new LinePlot($sales); $lineplot->SetColor("blue");
// 将折线图添加到图表中 $graph->Add($lineplot);
// 显示图表 $graph->Stroke();
示例二:创建饼图
准备数据:
php复制代码
$data = array(20, 30, 50);
创建饼图:
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_pie.php');
// 创建图表对象 $graph = new PieGraph(600, 400); $graph->SetShadow();
// 设置标题 $graph->title->Set("Monthly Sales Distribution");
// 创建饼图对象并设置数据 $p1 = new PiePlot($data); $p1->SetSliceColors(array('#2794F4', '#C9DE3C', '#FF9933')); $p1->value->SetFont(FF_ARIAL, FS_BOLD, 12); $p1->value->SetColor('black'); $p1->SetLabelType(PIE_VALUE_PER); $p1->SetCenter(0.5, 0.4);
// 将饼图添加到图表中 $graph->Add($p1);
// 显示图表 $graph->Stroke();
示例三:创建组合图(条形图和折线图)
准备数据:
php复制代码
$month = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); $sales1 = array(50, 150, 200, 180, 250, 300, 350, 400, 480, 500, 550, 650); $sales2 = array(60, 140, 210, 190, 240, 290, 340, 390, 470, 490, 540, 640);
创建组合图:
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_bar.php'); require_once ('jpgraph/jpgraph_line.php');
// 创建图表对象 $graph = new Graph(600, 400); $graph->SetScale("textlin"); $graph->SetShadow(); $graph->SetMarginColor('white'); $graph->title->Set("Monthly Sales Comparison"); $graph->xaxis->title->Set("Month"); $graph->yaxis->title->Set("Sales"); $graph->xaxis->SetTickLabels($month);
// 创建条形图对象并设置数据 $barplot = new BarPlot($sales1); $barplot->SetFillColor("#B0C4DE");
// 创建折线图对象并设置数据 $lineplot = new LinePlot($sales2); $lineplot->SetColor("red"); $lineplot->SetWeight(2); // 设置线条粗细
// 将条形图和折线图添加到图表中 $graph->Add($barplot); $graph->Add($lineplot);
// 显示图表 $graph->Stroke();
以上示例展示了如何使用PHP和JpGraph创建不同类型的图表,包括条形图、折线图和饼图,以及如何将它们组合在一起。这些图表都可以根据需要进行自定义,例如设置颜色、字体、标签和标题等。
当然可以,除了之前提到的条形图、折线图和饼图,使用PHP和JpGraph还可以创建其他多种类型的图表。以下是一些额外的图表类型及其示例代码:
示例一:创建点图(Scatter Plot)
点图用于展示两个变量之间的关系,通常用于分析数据中的趋势和相关性。
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_scatter.php');
// 创建数据 $x = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); $y = array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
// 创建图表对象 $graph = new Graph(600, 400); $graph->SetScale("linlin"); $graph->title->Set("Scatter Plot Example"); $graph->xaxis->title->Set("X-axis"); $graph->yaxis->title->Set("Y-axis");
// 创建点图对象并设置数据 $scatterplot = new ScatterPlot($x, $y); $scatterplot->mark->SetType(SCATTERPLOT_MARK_FILLEDCIRCLE); $scatterplot->mark->SetFillColor("red"); $scatterplot->mark->SetSize(10);
// 将点图添加到图表中 $graph->Add($scatterplot);
// 显示图表 $graph->Stroke();
示例二:创建雷达图(Radar Plot)
雷达图也称为蜘蛛网图,用于展示多个变量的比较,每个变量都有一个轴,这些轴从中心向外辐射。
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_radar.php');
// 创建数据 $data = array( array(8, 6, 4, 5, 7), // 第一组数据 array(5, 7, 6, 8, 5) // 第二组数据 );
// 创建图表对象 $graph = new RadarGraph(600, 400); $graph->title->Set("Radar Plot Example");
// 设置轴标签 $graph->axis->SetLabels(array("A", "B", "C", "D", "E"));
// 创建雷达图对象并设置数据 $rplot = new RadarPlot($data); $rplot->SetFillColor(array("lightblue", "orange")); $rplot->ShowLine(false); // 不显示连接线
// 将雷达图添加到图表中 $graph->Add($rplot);
// 显示图表 $graph->Stroke();
示例三:创建面积图(Area Plot)
面积图与折线图类似,但下方区域被填充,可以突出显示数量随时间的变化趋势。
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_line.php');
// 创建数据 $month = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); $sales = array(50, 150, 200, 180, 250, 300, 350, 400, 480, 500, 550, 650);
// 创建图表对象 $graph = new Graph(600, 400); $graph->SetScale("textlin"); $graph->SetShadow(); $graph->title->Set("Area Plot Example"); $graph->xaxis->title->Set("Month"); $graph->yaxis->title->Set("Sales"); $graph->xaxis->SetTickLabels($month);
// 创建面积图对象并设置数据 $areaplot = new LinePlot($sales); $areaplot->SetFillColor("lightblue@0.5"); // 设置填充颜色和透明度
// 将面积图添加到图表中 $graph->Add($areaplot);
// 显示图表 $graph->Stroke();
示例四:创建3D饼图(3D Pie Plot)
3D饼图用于展示数据的分布,与普通的2D饼图相比,它提供了更立体的视觉效果。
php复制代码
require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_pie.php'); require_once ('jpgraph/jpgraph_pie3d.php');
// 创建数据 $data = array(20, 30, 50);
// 创建图表对象 $graph = new PieGraph(600, 400); $graph->SetShadow(); $graph->title->Set("3D Pie Plot Example");
// 创建3D饼图对象并设置数据 $pie3d = new PiePlot3D($data); $pie3d->SetSliceColors(array("#FF9999", "#66B3FF", "#99FF99")); $pie3d->ExplodeSlice(2); // 突出显示第三个切片
// 将3D饼图添加到图表中 $graph->Add($pie3d);
// 显示图表 $graph->Stroke();
以上示例展示了如何使用PHP和JpGraph创建点图、雷达图、面积图和3D饼图等多种类型的图表。这些图表都可以根据需要进行自定义,以满足不同的数据可视化需求。