Changeset 267 for trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php
- Timestamp:
- Apr 14, 2019, 2:31:40 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/client/modules/Elezioni/grafici/jpgraph_scatter.php
r265 r267 1 <?php 1 <?php 2 2 /*======================================================================= 3 // File:JPGRAPH_SCATTER.PHP4 5 // Created:2001-02-116 // Ver: $Id: jpgraph_scatter.php 1397 2009-06-27 21:34:14Z ljp $7 8 // Copyright (c) Asial Corporation. All rights reserved.9 10 3 // File: JPGRAPH_SCATTER.PHP 4 // Description: Scatter (and impuls) plot extension for JpGraph 5 // Created: 2001-02-11 6 // Ver: $Id: jpgraph_scatter.php 957 2007-12-01 14:00:29Z ljp $ 7 // 8 // Copyright (c) Aditus Consulting. All rights reserved. 9 //======================================================================== 10 */ 11 11 require_once ('jpgraph_plotmark.inc.php'); 12 12 … … 20 20 public $iArrowSize = 2; 21 21 private $isizespec = array( 22 array(2,1),array(3,2),array(4,3),array(6,4),array(7,4),array(8,5),array(10,6),array(12,7),array(16,8),array(20,10) 23 ); 24 function __construct() { 25 // Empty 22 array(2,1),array(3,2),array(4,3),array(6,4),array(7,4),array(8,5),array(10,6),array(12,7),array(16,8),array(20,10)); 23 function FieldArrow() { 26 24 } 27 25 28 26 function SetSize($aSize,$aArrowSize=2) { 29 30 27 $this->iSize = $aSize; 28 $this->iArrowSize = $aArrowSize; 31 29 } 32 30 33 31 function SetColor($aColor) { 34 32 $this->iColor = $aColor; 35 33 } 36 34 37 35 function Stroke($aImg,$x,$y,$a) { 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 36 // First rotate the center coordinates 37 list($x,$y) = $aImg->Rotate($x,$y); 38 39 $old_origin = $aImg->SetCenter($x,$y); 40 $old_a = $aImg->a; 41 $aImg->SetAngle(-$a+$old_a); 42 43 $dx = round($this->iSize/2); 44 $c = array($x-$dx,$y,$x+$dx,$y); 45 $x += $dx; 46 47 list($dx,$dy) = $this->isizespec[$this->iArrowSize]; 48 $ca = array($x,$y,$x-$dx,$y-$dy,$x-$dx,$y+$dy,$x,$y); 49 50 $aImg->SetColor($this->iColor); 51 $aImg->Polygon($c); 52 $aImg->FilledPolygon($ca); 53 54 $aImg->SetCenter($old_origin[0],$old_origin[1]); 55 $aImg->SetAngle($old_a); 58 56 } 59 57 } … … 67 65 private $iAngles = array(); 68 66 private $iCallback = ''; 69 70 function __construct($datay,$datax,$angles) {71 72 73 74 75 76 77 78 parent::__construct($datay,$datax);79 80 81 82 67 68 function FieldPlot($datay,$datax,$angles) { 69 if( (count($datax) != count($datay)) ) 70 JpGraphError::RaiseL(20001);//("Fieldplots must have equal number of X and Y points."); 71 if( (count($datax) != count($angles)) ) 72 JpGraphError::RaiseL(20002);//("Fieldplots must have an angle specified for each X and Y points."); 73 74 $this->iAngles = $angles; 75 76 $this->Plot($datay,$datax); 77 $this->value->SetAlign('center','center'); 78 $this->value->SetMargin(15); 79 80 $this->arrow = new FieldArrow(); 83 81 } 84 82 85 83 function SetCallback($aFunc) { 86 84 $this->iCallback = $aFunc; 87 85 } 88 86 89 87 function Stroke($img,$xscale,$yscale) { 90 88 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 $this->arrow->SetColor($cc); 109 110 111 112 113 $yt = $yscale->Translate($this->coords[0][$i]); 114 115 116 117 118 } 119 89 // Remeber base color and size 90 $bc = $this->arrow->iColor; 91 $bs = $this->arrow->iSize; 92 $bas = $this->arrow->iArrowSize; 93 94 for( $i=0; $i<$this->numpoints; ++$i ) { 95 // Skip null values 96 if( $this->coords[0][$i]==="" ) 97 continue; 98 99 $f = $this->iCallback; 100 if( $f != "" ) { 101 list($cc,$cs,$cas) = call_user_func($f,$this->coords[1][$i],$this->coords[0][$i],$this->iAngles[$i]); 102 // Fall back on global data if the callback isn't set 103 if( $cc == "" ) $cc = $bc; 104 if( $cs == "" ) $cs = $bs; 105 if( $cas == "" ) $cas = $bas; 106 $this->arrow->SetColor($cc); 107 $this->arrow->SetSize($cs,$cas); 108 } 109 110 $xt = $xscale->Translate($this->coords[1][$i]); 111 $yt = $yscale->Translate($this->coords[0][$i]); 112 113 $this->arrow->Stroke($img,$xt,$yt,$this->iAngles[$i]); 114 $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt); 115 } 116 } 117 120 118 // Framework function 121 119 function Legend($aGraph) { 122 123 124 125 126 } 120 if( $this->legend != "" ) { 121 $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0, 122 $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget); 123 } 124 } 127 125 } 128 126 … … 132 130 //=================================================== 133 131 class ScatterPlot extends Plot { 134 public $mark ,$link;132 public $mark = ''; 135 133 private $impuls = false; 136 //--------------- 137 // CONSTRUCTOR 138 function __construct($datay,$datax=false) { 139 if( is_array($datax) && (count($datax) != count($datay)) ) { 140 JpGraphError::RaiseL(20003);//("Scatterplot must have equal number of X and Y points."); 141 } 142 parent::__construct($datay,$datax); 143 $this->mark = new PlotMark(); 144 $this->mark->SetType(MARK_SQUARE); 145 $this->mark->SetColor($this->color); 146 $this->value->SetAlign('center','center'); 147 $this->value->SetMargin(0); 148 $this->link = new LineProperty(1,'black','solid'); 149 $this->link->iShow = false; 150 } 151 152 //--------------- 153 // PUBLIC METHODS 134 private $linkpoints = false, $linkpointweight=1, $linkpointcolor="black"; 135 //--------------- 136 // CONSTRUCTOR 137 function ScatterPlot($datay,$datax=false) { 138 if( (count($datax) != count($datay)) && is_array($datax)) 139 JpGraphError::RaiseL(20003);//("Scatterplot must have equal number of X and Y points."); 140 $this->Plot($datay,$datax); 141 $this->mark = new PlotMark(); 142 $this->mark->SetType(MARK_SQUARE); 143 $this->mark->SetColor($this->color); 144 $this->value->SetAlign('center','center'); 145 $this->value->SetMargin(0); 146 } 147 148 //--------------- 149 // PUBLIC METHODS 154 150 function SetImpuls($f=true) { 155 $this->impuls = $f; 156 } 157 158 function SetStem($f=true) { 159 $this->impuls = $f; 160 } 151 $this->impuls = $f; 152 } 161 153 162 154 // Combine the scatter plot points with a line 163 function SetLinkPoints($aFlag=true,$aColor="black",$aWeight=1,$aStyle='solid') { 164 $this->link->iShow = $aFlag; 165 $this->link->iColor = $aColor; 166 $this->link->iWeight = $aWeight; 167 $this->link->iStyle = $aStyle; 155 function SetLinkPoints($aFlag=true,$aColor="black",$aWeight=1) { 156 $this->linkpoints=$aFlag; 157 $this->linkpointcolor=$aColor; 158 $this->linkpointweight=$aWeight; 168 159 } 169 160 170 161 function Stroke($img,$xscale,$yscale) { 171 162 172 $ymin=$yscale->scale_abs[0]; 173 if( $yscale->scale[0] < 0 ) 174 $yzero=$yscale->Translate(0); 175 else 176 $yzero=$yscale->scale_abs[0]; 177 178 $this->csimareas = ''; 179 for( $i=0; $i<$this->numpoints; ++$i ) { 180 181 // Skip null values 182 if( $this->coords[0][$i]==='' || $this->coords[0][$i]==='-' || $this->coords[0][$i]==='x') 183 continue; 184 185 if( isset($this->coords[1]) ) 186 $xt = $xscale->Translate($this->coords[1][$i]); 187 else 188 $xt = $xscale->Translate($i); 189 $yt = $yscale->Translate($this->coords[0][$i]); 190 191 192 if( $this->link->iShow && isset($yt_old) ) { 193 $img->SetColor($this->link->iColor); 194 $img->SetLineWeight($this->link->iWeight); 195 $old = $img->SetLineStyle($this->link->iStyle); 196 $img->StyleLine($xt_old,$yt_old,$xt,$yt); 197 $img->SetLineStyle($old); 198 } 199 200 if( $this->impuls ) { 201 $img->SetColor($this->color); 202 $img->SetLineWeight($this->weight); 203 $img->Line($xt,$yzero,$xt,$yt); 204 } 205 206 if( !empty($this->csimtargets[$i]) ) { 207 if( !empty($this->csimwintargets[$i]) ) { 208 $this->mark->SetCSIMTarget($this->csimtargets[$i],$this->csimwintargets[$i]); 209 } 210 else { 211 $this->mark->SetCSIMTarget($this->csimtargets[$i]); 212 } 213 $this->mark->SetCSIMAlt($this->csimalts[$i]); 214 } 215 216 if( isset($this->coords[1]) ) { 217 $this->mark->SetCSIMAltVal($this->coords[0][$i],$this->coords[1][$i]); 218 } 219 else { 220 $this->mark->SetCSIMAltVal($this->coords[0][$i],$i); 221 } 222 223 $this->mark->Stroke($img,$xt,$yt); 224 225 $this->csimareas .= $this->mark->GetCSIMAreas(); 226 $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt); 227 228 $xt_old = $xt; 229 $yt_old = $yt; 230 } 231 } 232 163 $ymin=$yscale->scale_abs[0]; 164 if( $yscale->scale[0] < 0 ) 165 $yzero=$yscale->Translate(0); 166 else 167 $yzero=$yscale->scale_abs[0]; 168 169 $this->csimareas = ''; 170 for( $i=0; $i<$this->numpoints; ++$i ) { 171 172 // Skip null values 173 if( $this->coords[0][$i]==='' || $this->coords[0][$i]==='-' || $this->coords[0][$i]==='x') 174 continue; 175 176 if( isset($this->coords[1]) ) 177 $xt = $xscale->Translate($this->coords[1][$i]); 178 else 179 $xt = $xscale->Translate($i); 180 $yt = $yscale->Translate($this->coords[0][$i]); 181 182 183 if( $this->linkpoints && isset($yt_old) ) { 184 $img->SetColor($this->linkpointcolor); 185 $img->SetLineWeight($this->linkpointweight); 186 $img->Line($xt_old,$yt_old,$xt,$yt); 187 } 188 189 if( $this->impuls ) { 190 $img->SetColor($this->color); 191 $img->SetLineWeight($this->weight); 192 $img->Line($xt,$yzero,$xt,$yt); 193 } 194 195 if( !empty($this->csimtargets[$i]) ) { 196 if( !empty($this->csimwintargets[$i]) ) { 197 $this->mark->SetCSIMTarget($this->csimtargets[$i],$this->csimwintargets[$i]); 198 } 199 else { 200 $this->mark->SetCSIMTarget($this->csimtargets[$i]); 201 } 202 $this->mark->SetCSIMAlt($this->csimalts[$i]); 203 } 204 205 if( isset($this->coords[1]) ) { 206 $this->mark->SetCSIMAltVal($this->coords[0][$i],$this->coords[1][$i]); 207 } 208 else { 209 $this->mark->SetCSIMAltVal($this->coords[0][$i],$i); 210 } 211 212 $this->mark->Stroke($img,$xt,$yt); 213 214 $this->csimareas .= $this->mark->GetCSIMAreas(); 215 $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt); 216 217 $xt_old = $xt; 218 $yt_old = $yt; 219 } 220 } 221 233 222 // Framework function 234 223 function Legend($aGraph) { 235 236 237 238 239 } 224 if( $this->legend != "" ) { 225 $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0, 226 $this->legendcsimtarget,$this->legendcsimalt,$this->legendcsimwintarget); 227 } 228 } 240 229 } // Class 241 230 /* EOF */
Note:
See TracChangeset
for help on using the changeset viewer.