source: trunk/client/modules/Elezioni/grafici/jpgraph_error.php@ 360

Last change on this file since 360 was 284, checked in by roby, 6 years ago
File size: 4.8 KB
Line 
1<?php
2/*=======================================================================
3 // File: JPGRAPH_ERROR.PHP
4 // Description: Error plot extension for JpGraph
5 // Created: 2001-01-08
6 // Ver: $Id: jpgraph_error.php 1106 2009-02-22 20:16:35Z ljp $
7 //
8 // Copyright (c) Asial Corporation. All rights reserved.
9 //========================================================================
10 */
11
12//===================================================
13// CLASS ErrorPlot
14// Description: Error plot with min/max value for
15// each datapoint
16//===================================================
17class ErrorPlot extends Plot {
18 private $errwidth=2;
19
20 //---------------
21 // CONSTRUCTOR
22 function __construct($datay,$datax=false) {
23 parent::__construct($datay,$datax);
24 $this->numpoints /= 2;
25 }
26 //---------------
27 // PUBLIC METHODS
28
29 // Gets called before any axis are stroked
30 function PreStrokeAdjust($graph) {
31 if( $this->center ) {
32 $a=0.5; $b=0.5;
33 ++$this->numpoints;
34 } else {
35 $a=0; $b=0;
36 }
37 $graph->xaxis->scale->ticks->SetXLabelOffset($a);
38 $graph->SetTextScaleOff($b);
39 //$graph->xaxis->scale->ticks->SupressMinorTickMarks();
40 }
41
42 // Method description
43 function Stroke($img,$xscale,$yscale) {
44 $numpoints=count($this->coords[0])/2;
45 $img->SetColor($this->color);
46 $img->SetLineWeight($this->weight);
47
48 if( isset($this->coords[1]) ) {
49 if( count($this->coords[1])!=$numpoints )
50 JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);
51 //("Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])." Number of Y-points:$numpoints");
52 else
53 $exist_x = true;
54 }
55 else
56 $exist_x = false;
57
58 for( $i=0; $i<$numpoints; ++$i) {
59 if( $exist_x )
60 $x=$this->coords[1][$i];
61 else
62 $x=$i;
63
64 if( !is_numeric($x) ||
65 !is_numeric($this->coords[0][$i*2]) || !is_numeric($this->coords[0][$i*2+1]) ) {
66 continue;
67 }
68
69 $xt = $xscale->Translate($x);
70 $yt1 = $yscale->Translate($this->coords[0][$i*2]);
71 $yt2 = $yscale->Translate($this->coords[0][$i*2+1]);
72 $img->Line($xt,$yt1,$xt,$yt2);
73 $img->Line($xt-$this->errwidth,$yt1,$xt+$this->errwidth,$yt1);
74 $img->Line($xt-$this->errwidth,$yt2,$xt+$this->errwidth,$yt2);
75 }
76 return true;
77 }
78} // Class
79
80
81//===================================================
82// CLASS ErrorLinePlot
83// Description: Combine a line and error plot
84// THIS IS A DEPRECATED PLOT TYPE JUST KEPT FOR
85// BACKWARD COMPATIBILITY
86//===================================================
87class ErrorLinePlot extends ErrorPlot {
88 public $line=null;
89 //---------------
90 // CONSTRUCTOR
91 function __construct($datay,$datax=false) {
92 parent::__construct($datay,$datax);
93 // Calculate line coordinates as the average of the error limits
94 $n = count($datay);
95 for($i=0; $i < $n; $i+=2 ) {
96 $ly[]=($datay[$i]+$datay[$i+1])/2;
97 }
98 $this->line=new LinePlot($ly,$datax);
99 }
100
101 //---------------
102 // PUBLIC METHODS
103 function Legend($graph) {
104 if( $this->legend != "" )
105 $graph->legend->Add($this->legend,$this->color);
106 $this->line->Legend($graph);
107 }
108
109 function Stroke($img,$xscale,$yscale) {
110 parent::Stroke($img,$xscale,$yscale);
111 $this->line->Stroke($img,$xscale,$yscale);
112 }
113} // Class
114
115
116//===================================================
117// CLASS LineErrorPlot
118// Description: Combine a line and error plot
119//===================================================
120class LineErrorPlot extends ErrorPlot {
121 public $line=null;
122 //---------------
123 // CONSTRUCTOR
124 // Data is (val, errdeltamin, errdeltamax)
125 function __construct($datay,$datax=false) {
126 $ly=array(); $ey=array();
127 $n = count($datay);
128 if( $n % 3 != 0 ) {
129 JpGraphError::RaiseL(4002);
130 //('Error in input data to LineErrorPlot. Number of data points must be a multiple of 3');
131 }
132 for($i=0; $i < $n; $i+=3 ) {
133 $ly[]=$datay[$i];
134 $ey[]=$datay[$i]+$datay[$i+1];
135 $ey[]=$datay[$i]+$datay[$i+2];
136 }
137 parent::__construct($ey,$datax);
138 $this->line=new LinePlot($ly,$datax);
139 }
140
141 //---------------
142 // PUBLIC METHODS
143 function Legend($graph) {
144 if( $this->legend != "" )
145 $graph->legend->Add($this->legend,$this->color);
146 $this->line->Legend($graph);
147 }
148
149 function Stroke($img,$xscale,$yscale) {
150 parent::Stroke($img,$xscale,$yscale);
151 $this->line->Stroke($img,$xscale,$yscale);
152 }
153} // Class
154
155
156/* EOF */
157?>
Note: See TracBrowser for help on using the repository browser.