16require_once(
"phplot.php");
 
   23    function PHPlot_Data($which_width=600, $which_height=400, $which_output_file=NULL, $which_input_file=NULL)
 
   25        if (! isset($this->img)) { 
 
   26            $this->
PHPlot($which_width, $which_height, $which_output_file, $which_input_file);
 
   40        if ($this->data_type == 
'text-data') {
 
   42        } elseif ($this->data_type != 
'data-data') {
 
   50        for($i=0; $i < $this->num_data_rows; $i++) {
 
   51            $rowsize = count($this->data[$i]);
 
   52            for ($j=$offset; $j < $rowsize; $j++) {
 
   53                if ($this->data[$i][$j] > @ $max[$j])
 
   54                    $max[$j] = $this->data[$i][$j];
 
   55                if (@ $max[$j] > $maxmax) 
 
   61        $end = count($max) + $offset;
 
   62        for ($i=$offset; $i < $end; $i++) {
 
   63            if ($max[$i] == 0 || $max[$i] == $maxmax) {
 
   67                    $amp = pow(10,round(log10($maxmax / $max[$i]))-1);
 
   68                    if ($amp * $max[$i] * 5 < $maxmax) {
 
   70                    } elseif ($amp * $max[$i] * 2 < $maxmax) {
 
   74                    $amp = $maxmax / $max[$i];
 
   75                    $digits = floor(log10($amp));
 
   76                    $amp = round($amp/pow(10,$digits-1))*pow(10,$digits-1);
 
   80            if ($amplify[$i] != 1 && $show_in_legend) 
 
   81                @ $this->legend[$i] .= 
"*$amplify[$i]";
 
   87        for ($i = 0; $i < $this->num_data_rows; $i++) {
 
   88            $rowsize = count($this->data[$i]);
 
   89            for ($j=$offset; $j < $rowsize; $j++) {
 
   90                $this->data[$i][$j] *= $amplify[$j];
 
   95        if ( ! $this->y_tick_increment) {
 
  123        if ($interval == 0) {
 
  124            $this->
DrawError(
'DoMovingAverage(): interval can\'t be 0');
 
  128        if ($datarow >= $this->records_per_group) {
 
  129            $this->
DrawError(
"DoMovingAverage(): Data row out of bounds ($datarow >= $this->records_per_group)");
 
  133        if ($this->data_type == 
'text-data') {
 
  135        } elseif ($this->data_type == 
'data-data') {
 
  138            $this->
DrawError(
'DoMovingAverage(): wrong data type!!');
 
  146            array_push($this->ndx_data_colors, $this->
SetIndexDarkColor($this->data_colors[$datarow]));
 
  150            array_push($this->line_widths, $width);
 
  152            array_push($this->line_widths,  $this->line_widths[$datarow] * 2);
 
  156            $this->legend[$this->records_per_group-1] = 
"(MA[$datarow]:$interval)";
 
  160        for ($i = 0; $i < $this->num_data_rows; $i++) {
 
  161            $storage[$i % $interval] = @ $this->data[$i][$datarow];
 
  162            $ma = array_sum($storage);
 
  163            $ma /= count($storage);
 
  164            array_push($this->data[$i], $ma);   
 
  165            $this->num_recs[$i]++;              
 
  167        $this->records_per_group++;
 
  180        if ($this->data_type == 
'text-data') {
 
  182        } elseif ($this->data_type != 
'data-data') {
 
  183            $this->
DrawError(
'DoWeightedMovingAverage(): wrong data type!!');
 
  187        if ($show_in_legend) {
 
  188            $this->legend[$datarow] .= 
" (MA: $interval)";
 
  191        $storage[0] = $this->data[0][$datarow];
 
  192        for ($i=1;$i < $this->num_data_rows; $i++) {
 
  193            $storage[$i] = @ $storage[$i-1] + $perc * ($this->data[$i][$datarow] - $storage[$i-1]);
 
  194            $ma = array_sum($storage);
 
  195            $ma /= count($storage);
 
  196            $this->data[$i][$datarow] = $ma;
 
  208        if ($this->data_type == 
'data-data') {
 
  210        } elseif ($this->data_type != 
'text-data') {
 
  216        foreach ($this->data as $key=>$val) {
 
  217            foreach ($val as $key2=>$val2) {
 
  218                if ($key2 >= $index) {
 
  219                    if (isset($this->data[$key][$key2+1])) {
 
  220                        $this->data[$key][$key2] = $this->data[$key][$key2+1];
 
  222                        unset($this->data[$key][$key2]);
 
  237        if ($this->data_type == 
'data-data') {
 
  239        } elseif ($this->data_type != 
'text-data') {
 
  244        $x += $offset; $y += $offset;
 
  246        while (list($key, $val) = each($this->data)) {
 
  247            if ($this->data[$key][$y] == 0) {
 
  248                $this->data[$key][$x] = 0;
 
  250                $this->data[$key][$x] /= $this->data[$key][$y];
 
PHPlot_Data($which_width=600, $which_height=400, $which_output_file=NULL, $which_input_file=NULL)
 
DoMovingAverage($datarow, $interval, $show=TRUE, $color=NULL, $width=NULL)
 
DoExponentialMovingAverage($datarow, $perc, $show_in_legend)
Computes an exponentially smoothed moving average.
 
DoScaleData($even, $show_in_legend)
 
SetIndexDarkColor($which_color)
 
DrawError($error_message, $where_x=NULL, $where_y=NULL)
 
SetYTickIncrement($which_ti='')
 
PHPlot($which_width=600, $which_height=400, $which_output_file=NULL, $which_input_file=NULL)