Depreciate MySQL and GD image graphs
[contractdashboard.git] / lib / jpgraph_error.php
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
/*=======================================================================
 // File:        JPGRAPH_ERROR.PHP
 // Description: Error plot extension for JpGraph
 // Created:     2001-01-08
 // Ver:         $Id: jpgraph_error.php 1106 2009-02-22 20:16:35Z ljp $
 //
 // Copyright (c) Aditus Consulting. All rights reserved.
 //========================================================================
 */
   
//===================================================
// CLASS ErrorPlot
// Description: Error plot with min/max value for
// each datapoint
//===================================================
class ErrorPlot extends Plot {
    private $errwidth=2;
    
    //---------------
    // CONSTRUCTOR
    function __construct($datay,$datax=false) {
        parent::__construct($datay,$datax);
        $this->numpoints /= 2;
    }
    //---------------
    // PUBLIC METHODS
 
    // Gets called before any axis are stroked
    function PreStrokeAdjust($graph) {
        if( $this->center ) {
            $a=0.5; $b=0.5;
            ++$this->numpoints;
        } else {
            $a=0; $b=0;
        }
        $graph->xaxis->scale->ticks->SetXLabelOffset($a);
        $graph->SetTextScaleOff($b);
        //$graph->xaxis->scale->ticks->SupressMinorTickMarks();
    }
 
    // Method description
    function Stroke($img,$xscale,$yscale) {
        $numpoints=count($this->coords[0])/2;
        $img->SetColor($this->color);
        $img->SetLineWeight($this->weight);
 
        if( isset($this->coords[1]) ) {
            if( count($this->coords[1])!=$numpoints )
            JpGraphError::RaiseL(2003,count($this->coords[1]),$numpoints);
            //("Number of X and Y points are not equal. Number of X-points:".count($this->coords[1])." Number of Y-points:$numpoints");
            else
            $exist_x = true;
        }
        else
        $exist_x = false;
 
        for( $i=0; $i<$numpoints; ++$i) {
            if( $exist_x )
            $x=$this->coords[1][$i];
            else
            $x=$i;
 
            if( !is_numeric($x) ||
            !is_numeric($this->coords[0][$i*2]) || !is_numeric($this->coords[0][$i*2+1]) ) {
                continue;
            }
 
            $xt = $xscale->Translate($x);
            $yt1 = $yscale->Translate($this->coords[0][$i*2]);
            $yt2 = $yscale->Translate($this->coords[0][$i*2+1]);
            $img->Line($xt,$yt1,$xt,$yt2);
            $img->Line($xt-$this->errwidth,$yt1,$xt+$this->errwidth,$yt1);
            $img->Line($xt-$this->errwidth,$yt2,$xt+$this->errwidth,$yt2);
        }
        return true;
    }
} // Class
 
 
//===================================================
// CLASS ErrorLinePlot
// Description: Combine a line and error plot
// THIS IS A DEPRECATED PLOT TYPE JUST KEPT FOR
// BACKWARD COMPATIBILITY
//===================================================
class ErrorLinePlot extends ErrorPlot {
    public $line=null;
    //---------------
    // CONSTRUCTOR
    function __construct($datay,$datax=false) {
        parent::__construct($datay,$datax);
        // Calculate line coordinates as the average of the error limits
        $n = count($datay);
        for($i=0; $i < $n; $i+=2 ) {
            $ly[]=($datay[$i]+$datay[$i+1])/2;
        }
        $this->line=new LinePlot($ly,$datax);
    }
 
    //---------------
    // PUBLIC METHODS
    function Legend($graph) {
        if( $this->legend != "" )
        $graph->legend->Add($this->legend,$this->color);
        $this->line->Legend($graph);
    }
     
    function Stroke($img,$xscale,$yscale) {
        parent::Stroke($img,$xscale,$yscale);
        $this->line->Stroke($img,$xscale,$yscale);
    }
} // Class
 
 
//===================================================
// CLASS LineErrorPlot
// Description: Combine a line and error plot
//===================================================
class LineErrorPlot extends ErrorPlot {
    public $line=null;
    //---------------
    // CONSTRUCTOR
    // Data is (val, errdeltamin, errdeltamax)
    function __construct($datay,$datax=false) {
        $ly=array(); $ey=array();
        $n = count($datay);
        if( $n % 3 != 0 ) {
            JpGraphError::RaiseL(4002);
            //('Error in input data to LineErrorPlot. Number of data points must be a multiple of 3');
        }
        for($i=0; $i < $n; $i+=3 ) {
            $ly[]=$datay[$i];
            $ey[]=$datay[$i]+$datay[$i+1];
            $ey[]=$datay[$i]+$datay[$i+2];
        }
        parent::__construct($ey,$datax);
        $this->line=new LinePlot($ly,$datax);
    }
 
    //---------------
    // PUBLIC METHODS
    function Legend($graph) {
        if( $this->legend != "" )
        $graph->legend->Add($this->legend,$this->color);
        $this->line->Legend($graph);
    }
     
    function Stroke($img,$xscale,$yscale) {
        parent::Stroke($img,$xscale,$yscale);
        $this->line->Stroke($img,$xscale,$yscale);
    }
} // Class
 
 
/* EOF */
?>