Home  >  Article  >  php教程  >  使用jpgraph创建笛卡尔图表源码实例教程

使用jpgraph创建笛卡尔图表源码实例教程

WBOY
WBOYOriginal
2016-06-21 08:53:40869browse

  在介绍完大部分php jpgraph安装配置教程后,即将开始介绍如何使用jpgraph进行图表的绘制,在之前的jpgraph教程中我已介绍过如何使用jpgraph创建折线图和柱状图实例教程,本教程将会首先介绍两个最常用的图表类型实例笛卡尔图表和饼图中的笛卡尔图表创建实例。本教程将描述所有图表的常用特性并详细介绍典型图表脚本的结构。通过阅读本部分,jpgraph的使用者将会对创建简单图表脚本有一个基本的理解,同时理解核心设置和使用的命名约定是什么。

  下面的所有jpgraph图表脚本在一定程度上是相同的结构。所有脚本都必须首先创建一个Graph类实例。Graph类代表整个图表,可以通过一系列数据构建一个或多个图(模型)。几乎所有用来控制图表外观的函数都是这个类的。

  为了感受一下常用的jpgraph对象,我们将展示最常用的图表类型实例,笛卡尔图表。

  笛卡尔图表常用的对象(X,Y图)

使用jpgraph绘制笛卡尔图表说明

  上图基本上说明了绘制图表时所用的函数代表的含义,下面我们可以参考下使用jpgraph绘制图表的代码。

  jpgraph类库文档约定所有Graph类实例都存储在一个命名为$graph的变量中。为了说明一些常用的实例变量,下图显示了脚本中一个基本的图表所操纵的对象。

整个代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59


require_once ("jpgraph/jpgraph.php");
require_once ("jpgraph/jpgraph_line.php");
 
$ydata = array(11,3,8,12,5,1,9,13,5,7);
$y2data = array(354,200,265,99,111,91,198,225,293,251);
 
// 创建图表并制定X、Y轴的刻度种类
$width=550;$height=400;
$graph = new Graph(550,400);
$graph->SetScale("textlin");
$graph->SetY2Scale("lin");
$graph->SetShadow();
 
// 调整图形留白的尺寸
$graph->SetMargin(50,150,60,80);
 
// 创建两个线性图形
$lineplot=new LinePlot($ydata);
$lineplot2=new LinePlot($y2data);
 
// 将图形添加到图表中
$graph->Add($lineplot);
$graph->AddY2($lineplot2);
$lineplot2->SetColor("orange");
$lineplot2->SetWeight(2);
 
// 调整轴的颜色
$graph->y2axis->SetColor("darkred");
$graph->yaxis->SetColor("blue");
 
$graph->title->SetFont(FF_ARIAL, FS_BOLD, 14);
$graph->title->Set("Using JpGraph Library");
$graph->title->SetMargin(10);
 
$graph->subtitle->SetFont(FF_ARIAL, FS_BOLD, 10);
$graph->subtitle->Set("(common objects)");
 
$graph->xaxis->title->SetFont(FF_ARIAL, FS_BOLD, 10);
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->SetFont(FF_ARIAL, FS_BOLD, 10);
$graph->yaxis->title->Set("Y-title");
 
// 设置模型的颜色
$lineplot->SetColor("blue");
$lineplot->SetWeight(2);
$lineplot2->SetColor("darkred");
$lineplot2->SetWeight(2);
 
// 设置模型的文本说明
$lineplot->SetLegend("Plot 1");
$lineplot2->SetLegend("Plot 2");
 
// 调整其位置
$graph->legend->SetPos(0.05,0.5,"right","center");
 
// 显示图表
$graph->Stroke();
?>

  jpgraph源码说明

  1、所有图表都需要从包含一个或多个类库文件的require_once语句开始,包含的具体目录与jpgraph安装地址有关。

  2、创建Y轴所需要的数据,一边之后绘制具体的折线图

  3、2D效果的折线类所有图表脚本都通过下面两种方法调用

  $graph = new Graph($width, $height);
  $graph->SetScale(’…’);

  SetScale函数主要用来指定X、Y轴的尺度类型,主要有线性(lin),使用在X和Y轴;对数(log),使用在X和Y轴;文本(text),只能使用在X轴上;整数(int),使用在X和Y轴。

  SetY2Scale函数主要用来指定第二个Y轴的尺度类型。

  SetShadow函数主要给图表增加阴影效果。

  上述这两个调用语句将会创建一个必要的Graph类实例,其代表整个图表,并指定X和Y轴应该使用什么刻度。在上述实例中由于使用了第二个抽,所以需要脚本调用$graph->SetY2Scale(’…’);

  4、大多数图表都需要调整左右上下边距,SetMargin函数就是这个意思。即,$graph->SetMargin($left,$right,$top,$bottom);

  5、然后根据之前给出的数据创建两个折线图实例并将其放到图表中,默认线的颜色是蓝色,由于此图有两个折线,所以需要调整第二条折线的颜色以及粗细。

  6、所有文本对象比如图表和轴的标题都是常用的文本类的实例,这意味着文本、字体、颜色的指定都是相同的方法,即

  $graph->title->SetFont(FF_ARIAL, FS_BOLD, 14);

  $graph->title->Set(”Using JpGraph Library”);

  $graph->title->SetMargin(10);

  $graph->subtitle->SetFont(FF_ARIAL, FS_BOLD, 10);

  $graph->subtitle->Set(’(common objects)’);

  设置轴的标题方法类似

  $graph->xaxis->title->SetFont(FF_ARIAL, FS_BOLD, 10);

  $graph->xaxis->title->Set(”X-title”);

  $graph->yaxis->title->SetFont(FF_ARIAL, FS_BOLD, 10);

  $graph->yaxis->title->Set(”Y-title”);

  关于jpgraph文本和字体的控制请参考教程:jpgraph中文使用手册之文本和字体控制教程

  7、最后,所有图标的末尾都需要调用Stroke()或其变种函数StrokeCSIM(), StrokeCSIMIMage(),将构造的图片送回游览器。

  使用jpgraph绘制图表思路总结

  通过这个jpgraph实例,我们可以看到使用jpgraph绘制图表的大体思路如下

  1、引入jpgraph类库以及需要绘制的图形模型文件。

  2、创建Graph实例,其是整个图表的代表,类似于PS中的画布概念,所有的图形都是在这个上面绘制的,并制定X、Y轴的刻度类型。

  3、为了美观,不让整个图表不充斥图形,你可以调整图形在图表中绘制时左右上下的边距。

  4、根据相关数据创建所需要绘制的图形实例并将其放到图表中。

  5、然后就是整个图表、各种图形的标题、X、Y轴的文本说明以及颜色、字体方面的设置。

  6、最后将绘制的图表输出到游览器中显示。

  至此,使用jpgraph绘制笛卡尔图表的实例教程就介绍完了,相信通过上面这些jpgraph源码的说明,会让你对使用jpgraph绘制图表的思路有所领悟。

  :PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn