[ PHPXref.com ] [ Generated: Sun Jul 20 20:17:16 2008 ] [ Simple Spreadsheet 0.3 ]
[ Index ]     [ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

/jpgraph/ -> jpgraph_error.php (source)

   1  <?php
   2  /*=======================================================================
   3  // File:     JPGRAPH_ERROR.PHP
   4  // Description:    Error plot extension for JpGraph
   5  // Created:     2001-01-08
   6  // Author:    Johan Persson (johanp@aditus.nu)
   7  // Ver:        $Id: jpgraph_error.php 461 2006-02-04 12:06:40Z ljp $
   8  //
   9  // Copyright (c) Aditus Consulting. All rights reserved.
  10  //========================================================================
  11  */
  12  
  13  //===================================================
  14  // CLASS ErrorPlot
  15  // Description: Error plot with min/max value for
  16  // each datapoint
  17  //===================================================
  18  class ErrorPlot extends Plot {
  19      var $errwidth=2;
  20  //---------------
  21  // CONSTRUCTOR
  22      function ErrorPlot(&$datay,$datax=false) {
  23      $this->Plot($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  //===================================================
  87  class ErrorLinePlot extends ErrorPlot {
  88      var $line=null;
  89  //---------------
  90  // CONSTRUCTOR
  91      function ErrorLinePlot(&$datay,$datax=false) {
  92      $this->ErrorPlot($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  //===================================================
 120  class LineErrorPlot extends ErrorPlot {
 121      var $line=null;
 122  //---------------
 123  // CONSTRUCTOR
 124      // Data is (val, errdeltamin, errdeltamax)
 125      function LineErrorPlot(&$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      $this->ErrorPlot($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  ?>


[ Powered by PHPXref - Served by Debian GNU/Linux ]