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

📄 jpgraph_scatter.php

📁 最近在做软交换时研究的一个软交换的东东
💻 PHP
字号:
<?php /*=======================================================================// File:	JPGRAPH_SCATTER.PHP// Description: Scatter (and impuls) plot extension for JpGraph// Created: 	2001-02-11// Author:	Johan Persson (johanp@aditus.nu)// Ver:		$Id: jpgraph_scatter.php 173 2005-03-13 20:34:07Z rcourtna $//// License:	This code is released under QPL// Copyright (C) 2001,2002 Johan Persson//========================================================================*/require_once ('jpgraph_plotmark.inc');//===================================================// CLASS FieldArrow// Description: Draw an arrow at (x,y) with angle a//===================================================class FieldArrow {    var $iSize=10;  // Length in pixels for  arrow    var $iArrowSize = 2;    var $iColor='black';    var $isizespec = array(	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));    function FieldArrow() {    }    function SetSize($aSize,$aArrowSize=2) {	$this->iSize = $aSize;	$this->iArrowSize = $aArrowSize;    }    function SetColor($aColor) {	$this->iColor = $aColor;    }    function Stroke($aImg,$x,$y,$a) {	$old_origin = $aImg->SetCenter($x,$y);	$old_a = $aImg->SetAngle(-$a);	$dx = round($this->iSize/2);	$c = array($x-$dx,$y,$x+$dx,$y);	$x += $dx;	list($dx,$dy) = $this->isizespec[$this->iArrowSize];	$ca = array($x,$y,$x-$dx,$y-$dy,$x-$dx,$y+$dy,$x,$y);	$aImg->SetColor($this->iColor);	$aImg->Polygon($c);	$aImg->FilledPolygon($ca);	$aImg->SetCenter($old_origin[0],$old_origin[1]);	$aImg->SetAngle($old_a);    }}//===================================================// CLASS FieldPlot// Description: Render a field plot//===================================================class FieldPlot extends Plot {    var $iAngles;    var $iCallback='';    function FieldPlot($datay,$datax,$angles) {	if( (count($datax) != count($datay)) )	    JpGraphError::Raise("Fieldplots must have equal number of X and Y points.");	if( (count($datax) != count($angles)) )	    JpGraphError::Raise("Fieldplots must have an angle specified for each X and Y points.");		$this->iAngles = $angles;	$this->Plot($datay,$datax);	$this->value->SetAlign('center','center');	$this->value->SetMargin(15);	$this->arrow = new FieldArrow();    }    function SetCallback($aFunc) {	$this->iCallback = $aFunc;    }    function Stroke(&$img,&$xscale,&$yscale) {	// Remeber base color and size	$bc = $this->arrow->iColor;	$bs = $this->arrow->iSize;	$bas = $this->arrow->iArrowSize;	for( $i=0; $i<$this->numpoints; ++$i ) {	    // Skip null values	    if( $this->coords[0][$i]==="" )		continue;	    $f = $this->iCallback;	    if( $f != "" ) {		list($cc,$cs,$cas) = call_user_func($f,$this->coords[1][$i],$this->coords[0][$i],$this->iAngles[$i]);		// Fall back on global data if the callback isn't set		if( $cc  == "" ) $cc = $bc;		if( $cs  == "" ) $cs = $bs;		if( $cas == "" ) $cas = $bas;		//echo "f=$f, cc=$cc, cs=$cs, cas=$cas<br>";		$this->arrow->SetColor($cc);	    		$this->arrow->SetSize($cs,$cas);	    }	    $xt = $xscale->Translate($this->coords[1][$i]);	    $yt = $yscale->Translate($this->coords[0][$i]);		    $this->arrow->Stroke($img,$xt,$yt,$this->iAngles[$i]);	    $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt);	}    }	    // Framework function    function Legend(&$aGraph) {	if( $this->legend != "" ) {	    $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0,				 $this->legendcsimtarget,$this->legendcsimalt);	}    }	}//===================================================// CLASS ScatterPlot// Description: Render X and Y plots//===================================================class ScatterPlot extends Plot {    var $impuls = false;    var $linkpoints = false, $linkpointweight=1, $linkpointcolor="black";//---------------// CONSTRUCTOR    function ScatterPlot($datay,$datax=false) {	if( (count($datax) != count($datay)) && is_array($datax))	    JpGraphError::Raise("Scatterplot must have equal number of X and Y points.");	$this->Plot($datay,$datax);	$this->mark = new PlotMark();	$this->mark->SetType(MARK_SQUARE);	$this->mark->SetColor($this->color);	$this->value->SetAlign('center','center');	$this->value->SetMargin(0);    }//---------------// PUBLIC METHODS	    function SetImpuls($f=true) {	$this->impuls = $f;    }       // Combine the scatter plot points with a line    function SetLinkPoints($aFlag=true,$aColor="black",$aWeight=1) {	$this->linkpoints=$aFlag;	$this->linkpointcolor=$aColor;	$this->linkpointweight=$aWeight;    }    function Stroke(&$img,&$xscale,&$yscale) {	$ymin=$yscale->scale_abs[0];	if( $yscale->scale[0] < 0 )	    $yzero=$yscale->Translate(0);	else	    $yzero=$yscale->scale_abs[0];	    	$this->csimareas = '';	for( $i=0; $i<$this->numpoints; ++$i ) {	    // Skip null values	    if( $this->coords[0][$i]==="" )		continue;	    if( isset($this->coords[1]) )		$xt = $xscale->Translate($this->coords[1][$i]);	    else		$xt = $xscale->Translate($i);	    $yt = $yscale->Translate($this->coords[0][$i]);		    if( $this->linkpoints && isset($yt_old) ) {		$img->SetColor($this->linkpointcolor);		$img->SetLineWeight($this->linkpointweight);		$img->Line($xt_old,$yt_old,$xt,$yt);	    }	    if( $this->impuls ) {		$img->SetColor($this->color);		$img->SetLineWeight($this->weight);		$img->Line($xt,$yzero,$xt,$yt);	    }		    if( !empty($this->csimtargets[$i]) ) {	        $this->mark->SetCSIMTarget($this->csimtargets[$i]);	        $this->mark->SetCSIMAlt($this->csimalts[$i]);	    }	    	    if( isset($this->coords[1]) ) {		$this->mark->SetCSIMAltVal($this->coords[0][$i],$this->coords[1][$i]);	    }	    else {		$this->mark->SetCSIMAltVal($this->coords[0][$i],$i);	    }	    $this->mark->Stroke($img,$xt,$yt);		    $this->csimareas .= $this->mark->GetCSIMAreas();	    $this->value->Stroke($img,$this->coords[0][$i],$xt,$yt);	    $xt_old = $xt;	    $yt_old = $yt;	}    }	    // Framework function    function Legend(&$aGraph) {	if( $this->legend != "" ) {	    $aGraph->legend->Add($this->legend,$this->mark->fill_color,$this->mark,0,				 $this->legendcsimtarget,$this->legendcsimalt);	}    }	} // Class/* EOF */?>

⌨️ 快捷键说明

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