⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpgraph_radar.php

📁 最近在做软交换时研究的一个软交换的东东
💻 PHP
📖 第 1 页 / 共 2 页
字号:
    }	    function SetLegend($legend) {	$this->legend=$legend;    }    function SetLineStyle($aStyle) {	$this->linestyle=$aStyle;    }	    function SetLineWeight($w) {	$this->weight=$w;    }		    function SetFillColor($aColor) {	$this->fill_color = $aColor;	$this->fill = true;		    }        function SetFill($f=true) {	$this->fill = $f;    }        function SetColor($aColor,$aFillColor=false) {	$this->color = $aColor;	if( $aFillColor ) {	    $this->SetFillColor($aFillColor);	    $this->fill = true;	}    }	    function GetCSIMareas() {	JpGraphError::Raise("Client side image maps not supported for RadarPlots.");    }	    function Stroke(&$img, $pos, &$scale, $startangle) {	$nbrpnts = count($this->data);	$astep=2*M_PI/$nbrpnts;			$a=$startangle;			// Rotate each point to the correct axis-angle	// TODO: Update for LogScale	for($i=0; $i<$nbrpnts; ++$i) {	    //$c=$this->data[$i];	    $cs=$scale->RelTranslate($this->data[$i]);	    $x=round($cs*cos($a)+$scale->scale_abs[0]);	    $y=round($pos-$cs*sin($a));	    /*	      $c=log10($c);	      $x=round(($c-$scale->scale[0])*$scale->scale_factor*cos($a)+$scale->scale_abs[0]);	      $y=round($pos-($c-$scale->scale[0])*$scale->scale_factor*sin($a));			    */	    $pnts[$i*2]=$x;	    $pnts[$i*2+1]=$y;	    $a += $astep;	}	if( $this->fill ) {	    $img->SetColor($this->fill_color);	    $img->FilledPolygon($pnts);	}	$img->SetLineWeight($this->weight);	$img->SetColor($this->color);	$img->SetLineStyle($this->linestyle);	$pnts[]=$pnts[0];	$pnts[]=$pnts[1];	$img->Polygon($pnts);	$img->SetLineStyle('solid'); // Reset line style to default	// Add plotmarks on top	if( $this->mark->show ) {	    for($i=0; $i < $nbrpnts; ++$i) {		$this->mark->Stroke($img,$pnts[$i*2],$pnts[$i*2+1]); 	    }	}    }	//---------------// PRIVATE METHODS    function GetCount() {	return count($this->data);    }	    function Legend(&$graph) {	if( $this->legend=="" ) return;	if( $this->fill )	    $graph->legend->Add($this->legend,$this->fill_color,$this->mark);	else	    $graph->legend->Add($this->legend,$this->color,$this->mark);	    }	} // Class//===================================================// CLASS RadarGraph// Description: Main container for a spider graph//===================================================class RadarGraph extends Graph {    var $posx;    var $posy;    var $len;		    var $plots=null, $axis_title=null;    var $grid,$axis=null;//---------------// CONSTRUCTOR    function RadarGraph($width=300,$height=200,$cachedName="",$timeout=0,$inline=1) {	$this->Graph($width,$height,$cachedName,$timeout,$inline);	$this->posx=$width/2;	$this->posy=$height/2;	$this->len=min($width,$height)*0.35;	$this->SetColor(array(255,255,255));	$this->SetTickDensity(TICKD_NORMAL);	$this->SetScale("lin");	$this->SetGridDepth(DEPTH_FRONT);    }//---------------// PUBLIC METHODS    function SupressTickMarks($f=true) {    	if( ERR_DEPRECATED )    		JpGraphError::Raise('RadarGraph::SupressTickMarks() is deprecated. Use HideTickMarks() instead.');		$this->axis->scale->ticks->SupressTickMarks($f);    }    function HideTickMarks($aFlag=true) {		$this->axis->scale->ticks->SupressTickMarks($aFlag);    }        function ShowMinorTickmarks($aFlag=true) {    	$this->yscale->ticks->SupressMinorTickMarks(!$aFlag);    }	    function SetScale($axtype,$ymin=1,$ymax=1) {	if( $axtype != "lin" && $axtype != "log" ) {	    JpGraphError::Raise("Illegal scale for spiderplot ($axtype). Must be \"lin\" or \"log\"");	}	if( $axtype=="lin" ) {	    $this->yscale = & new LinearScale($ymin,$ymax);	    $this->yscale->ticks = & new RadarLinearTicks();	    $this->yscale->ticks->SupressMinorTickMarks();	}	elseif( $axtype=="log" ) {	    $this->yscale = & new LogScale($ymin,$ymax);	    $this->yscale->ticks = & new RadarLogTicks();	}			$this->axis = & new RadarAxis($this->img,$this->yscale);	$this->grid = & new RadarGrid();		    }    function SetSize($aSize) {	if( $aSize<0.1 || $aSize>1 )	    JpGraphError::Raise("Radar Plot size must be between 0.1 and 1. (Your value=$s)");	$this->len=min($this->img->width,$this->img->height)*$aSize/2;    }    function SetPlotSize($aSize) {	$this->SetSize($aSize);    }    function SetTickDensity($densy=TICKD_NORMAL) {	$this->ytick_factor=25;			switch( $densy ) {	    case TICKD_DENSE:		$this->ytick_factor=12;				    break;	    case TICKD_NORMAL:		$this->ytick_factor=25;				    break;	    case TICKD_SPARSE:		$this->ytick_factor=40;				    break;	    case TICKD_VERYSPARSE:		$this->ytick_factor=70;				    break;			    default:		JpGraphError::Raise("RadarPlot Unsupported Tick density: $densy");	}    }    function SetPos($px,$py=0.5) {	$this->SetCenter($px,$py);    }    function SetCenter($px,$py=0.5) {	assert($px > 0 && $py > 0 );	$this->posx=$this->img->width*$px;	$this->posy=$this->img->height*$py;    }    function SetColor($c) {	$this->SetMarginColor($c);    }			    function SetTitles($title) {	$this->axis_title = $title;    }    function Add(&$splot) {	$this->plots[]=$splot;    }	    function GetPlotsYMinMax() {	$min=$this->plots[0]->Min();	$max=$this->plots[0]->Max();	foreach( $this->plots as $p ) {	    $max=max($max,$p->Max());	    $min=min($min,$p->Min());	}	if( $min < 0 ) 	    JpGraphError::Raise("Minimum data $min (Radar plots only makes sence to use when all data points > 0)");	return array($min,$max);    }	    // Stroke the Radar graph    function Stroke($aStrokeFileName="") {	// Set Y-scale	if( !$this->yscale->IsSpecified() && count($this->plots)>0 ) {	    list($min,$max) = $this->GetPlotsYMinMax();	    $this->yscale->AutoScale($this->img,0,$max,$this->len/$this->ytick_factor);	}	// Set start position end length of scale (in absolute pixels)	$this->yscale->SetConstants($this->posx,$this->len);			// We need as many axis as there are data points	$nbrpnts=$this->plots[0]->GetCount();			// If we have no titles just number the axis 1,2,3,...	if( $this->axis_title==null ) {	    for($i=0; $i < $nbrpnts; ++$i ) 		$this->axis_title[$i] = $i+1;	}	elseif(count($this->axis_title)<$nbrpnts) 	    JpGraphError::Raise("Number of titles does not match number of points in plot.");	for($i=0; $i<count($this->plots); ++$i )	    if( $nbrpnts != $this->plots[$i]->GetCount() )		JpGraphError::Raise("Each spider plot must have the same number of data points.");	if( $this->background_image != "" ) {	    $this->StrokeFrameBackground();	}	else {		    $this->StrokeFrame();	}	$astep=2*M_PI/$nbrpnts;	// Prepare legends	for($i=0; $i<count($this->plots); ++$i)	    $this->plots[$i]->Legend($this);	$this->legend->Stroke($this->img);				$this->footer->Stroke($this->img);				if( $this->grid_depth == DEPTH_BACK ) {	    // Draw axis and grid	    for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {		$this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);	    }		}			// Plot points	$a=M_PI/2;	for($i=0; $i<count($this->plots); ++$i )	    $this->plots[$i]->Stroke($this->img, $this->posy, $this->yscale, $a);			if( $this->grid_depth != DEPTH_BACK ) {	    // Draw axis and grid	    for( $i=0,$a=M_PI/2; $i < $nbrpnts; ++$i, $a += $astep ) {		$this->axis->Stroke($this->posy,$a,$grid[$i],$this->axis_title[$i],$i==0);	    }		}	$this->grid->Stroke($this->img,$grid);	$this->StrokeTitles();		// Stroke texts	if( $this->texts != null ) {	    foreach( $this->texts as $t) 		$t->Stroke($this->img);	}	// Should we do any final image transformation	if( $this->iImgTrans ) {	    if( !class_exists('ImgTrans') ) {		require_once('jpgraph_imgtrans.php');	    }	       	    $tform = new ImgTrans($this->img->img);	    $this->img->img = $tform->Skew3D($this->iImgTransHorizon,$this->iImgTransSkewDist,					     $this->iImgTransDirection,$this->iImgTransHighQ,					     $this->iImgTransMinSize,$this->iImgTransFillColor,					     $this->iImgTransBorder);	}		// If the filename is given as the special "__handle"	// then the image handler is returned and the image is NOT	// streamed back	if( $aStrokeFileName == _IMG_HANDLER ) {	    return $this->img->img;	    }	else {	    // Finally stream the generated picture						    $this->cache->PutAndStream($this->img,$this->cache_name,$this->inline,				       $aStrokeFileName);			}    }} // Class/* EOF */?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -