您好!欢迎访问家园网-www.jy.wang!

家园网

JpGraph在PHP中的详细教程

网络 作者:本站 点击:

JpGraph在PHP中的详细教程

一、JpGraph简介

  1. 概述

    JpGraph是一种专门用于绘制统计图的运行库。使用JpGraph创建统计图时,只需要给出相应的数据,设置好统计图的标题和类型,即可快速生成所需的图表样式。它支持生成X-Y坐标图、X-Y-Y坐标图、柱形图、饼图、3D饼图等多种统计图,并会自动生成坐标轴、坐标轴刻度、图例等信息。

  2. 特点

    • 面向对象的图像绘制库,封装了GD2函数库中的函数,简化了统计图的生成过程。

    • 支持多种图表类型,满足不同需求。

    • 自动生成坐标轴、坐标轴刻度、图例等信息,节省开发时间。

    • 提供了丰富的配置选项,可以自定义图表的外观和样式。

二、JpGraph的安装和配置

  1. 下载和安装

    JpGraph的下载地址是:https://jpgraph.net/download/。下载后,将解压得到的src文件夹拷贝到项目文件夹中即可使用。

  2. 环境要求

    JpGraph需要GD库支持。如果GD库未安装,需要先安装GD库。

三、JpGraph的基本使用

  1. 引入类库

    使用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"); // 生成线性图时引入
  2. 创建画布

    使用Graph类创建一个画布对象,设置画布的大小和背景颜色等属性。

    php复制代码


    $graph = new Graph(400, 200, "auto"); // 创建一个400x200的画布

    $graph->SetScale("textlin"); // 设置坐标轴刻度类型
  3. 设置标题和图例

    使用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'); // 设置图例填充颜色
  4. 设置坐标轴

    使用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轴颜色
  5. 设置数据

    根据图表类型,设置相应的数据。例如,生成柱形图时,需要设置柱形图的数据数组;生成线性图时,需要设置线性图的数据数组。

    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); // 将柱形图添加到画布上
  6. 生成图表

    使用Stroke方法生成图表,并输出到浏览器或保存为图片文件。

    php复制代码


    $graph->Stroke(); // 生成图表并输出到浏览器

    //graph $->Stroke('./test.png'); // 生成图表并保存为图片文件、

设置 标题```、

例####、 四坐标、轴J等pGrap属性h。的
详细属性和方法

  1. 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创建不同类型数据可视化图表的示例。

示例一:创建折线图

  1. 准备数据

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);
  1. 创建折线图

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();

示例二:创建饼图

  1. 准备数据

php复制代码


$data = array(20, 30, 50);
  1. 创建饼图

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();

示例三:创建组合图(条形图和折线图)

  1. 准备数据

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);
  1. 创建组合图

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饼图等多种类型的图表。这些图表都可以根据需要进行自定义,以满足不同的数据可视化需求。




标签: