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

📄 phplot.php

📁 每个RFC 3261信息头有一个相应的存取标识. 但是,许多信息头拥有同样的形式。 例如。To和From的信息头都是由显示名和一个URI组成。 To和From信息头用来管理与处理NameAddr实例的
💻 PHP
📖 第 1 页 / 共 5 页
字号:
		//Ticks and datalables can be left of plot only, right of plot only, 		//  both on the left and right of plot, or crossing a user defined Y-axis		// 		//Its faster to draw both left and right ticks at same time		//  than first left and then right. 		if ($this->y_axis_position != "") { 			//Ticks and lables are drawn on the left border of yaxis			$yaxis_x = $this->xtr($this->y_axis_position);		} else { 			//Ticks and lables are drawn on the left border of PlotArea.			$yaxis_x = $this->plot_area[0];		}		$y_pixels = $this->ytr($which_ypos);		//Lines Across the Plot Area		if ($this->draw_y_grid == 1) {			ImageLine($this->img,$this->plot_area[0]+1,$y_pixels,				$this->plot_area[2]-1,$y_pixels,$this->ndx_light_grid_color);		}		//Ticks to the Left of the Plot Area		if (($this->vert_tick_position == "plotleft") || ($this->vert_tick_position == "both") ) { 			ImageLine($this->img,(-$this->tick_length+$yaxis_x),			$y_pixels,$yaxis_x,			$y_pixels, $this->ndx_tick_color);		}		//Ticks to the Right of the Plot Area		if (($this->vert_tick_position == "plotright") || ($this->vert_tick_position == "both") ) { 			ImageLine($this->img,($this->plot_area[2]+$this->tick_length),			$y_pixels,$this->plot_area[2],			$y_pixels,$this->ndx_tick_color);		}		//Ticks on the Y Axis 		if (($this->vert_tick_position == "yaxis") ) { 			ImageLine($this->img,($yaxis_x - $this->tick_length),			$y_pixels,$yaxis_x,$y_pixels,$this->ndx_tick_color);		}		//DataLabel//ajo working		//$this->DrawText($this->y_label_ttffont, 0,($yaxis_x - $this->y_label_width - $this->tick_length/2),		//		$y_pixels, $this->ndx_text_color, $this->axis_ttffont_size, $which_ylab);		ImageString($this->img, $this->small_font, ($yaxis_x - $this->y_label_width - $this->tick_length/2),			( -($this->small_font_height/2.0) + $y_pixels),$which_ylab, $this->ndx_text_color);	}	function DrawVerticalTicks() {		if ($this->skip_top_tick != 1) { //If tick increment doesn't hit the top 			//Left Top			//ImageLine($this->img,(-$this->tick_length+$this->xtr($this->plot_min_x)),			//		$this->ytr($this->plot_max_y),$this->xtr($this->plot_min_x),$this->ytr($this->plot_max_y),$this->ndx_tick_color);			//$ylab = $this->FormatYTickLabel($plot_max_y);			//Right Top			//ImageLine($this->img,($this->xtr($this->plot_max_x)+$this->tick_length),			//		$this->ytr($this->plot_max_y),$this->xtr($this->plot_max_x-1),$this->ytr($this->plot_max_y),$this->ndx_tick_color);			//Draw Grid Line at Top			ImageLine($this->img,$this->plot_area[0]+1,$this->ytr($this->plot_max_y),					$this->plot_area[2]-1,$this->ytr($this->plot_max_y),$this->ndx_light_grid_color);		}		if ($this->skip_bottom_tick != 1) { 			//Right Bottom			//ImageLine($this->img,($this->xtr($this->plot_max_x)+$this->tick_length),			//		$this->ytr($this->plot_min_y),$this->xtr($this->plot_max_x),			//		$this->ytr($this->plot_min_y),$this->ndx_tick_color);			//Draw Grid Line at Bottom of Plot			ImageLine($this->img,$this->xtr($this->plot_min_x)+1,$this->ytr($this->plot_min_y),					$this->xtr($this->plot_max_x),$this->ytr($this->plot_min_y),$this->ndx_light_grid_color);		}				// maxy is always > miny so delta_y is always positive		if ($this->vert_tick_increment) {			$delta_y = $this->vert_tick_increment;		} elseif ($this->num_vert_ticks) {			$delta_y = ($this->plot_max_y - $this->plot_min_y) / $this->num_vert_ticks;		} else {			$delta_y =($this->plot_max_y - $this->plot_min_y) / 10 ;		}		$y_tmp = $this->plot_min_y;		SetType($y_tmp,'double');		if ($this->skip_bottom_tick == 1) { 			$y_tmp += $delta_y;		}		while ($y_tmp <= $this->plot_max_y){			//For log plots: 			if (($this->yscale_type == "log") && ($this->plot_min_y == 1) && 				($delta_y%10 == 0) && ($y_tmp == $this->plot_min_y)) { 				$y_tmp = $y_tmp - 1; //Set first increment to 9 to get: 1,10,20,30,...			}			$ylab = $this->FormatYTickLabel($y_tmp);			$this->DrawVerticalTick($ylab,$y_tmp);			$y_tmp += $delta_y;		}		return true;	} // function DrawVerticalTicks	function SetTranslation() {		if ($this->xscale_type == "log") { 			$this->xscale = ($this->plot_area_width)/(log10($this->plot_max_x) - log10($this->plot_min_x));		} else { 			$this->xscale = ($this->plot_area_width)/($this->plot_max_x - $this->plot_min_x);		}		if ($this->yscale_type == "log") { 			$this->yscale = ($this->plot_area_height)/(log10($this->plot_max_y) - log10($this->plot_min_y));		} else { 			$this->yscale = ($this->plot_area_height)/($this->plot_max_y - $this->plot_min_y);		}		// GD defines x=0 at left and y=0 at TOP so -/+ respectively		if ($this->xscale_type == "log") { 			$this->plot_origin_x = $this->plot_area[0] - ($this->xscale * log10($this->plot_min_x) );		} else { 			$this->plot_origin_x = $this->plot_area[0] - ($this->xscale * $this->plot_min_x);		}		if ($this->yscale_type == "log") { 			$this->plot_origin_y = $this->plot_area[3] + ($this->yscale * log10($this->plot_min_y));		} else { 			$this->plot_origin_y = $this->plot_area[3] + ($this->yscale * $this->plot_min_y);		}		$this->scale_is_set = 1;	} // function SetTranslation	function xtr($x_world) {	//Translate world coordinates into pixel coordinates	//The pixel coordinates are those of the ENTIRE image, not just the plot_area		//$x_pixels =  $this->x_left_margin + ($this->image_width - $this->x_tot_margin)*(($x_world - $this->plot_min_x) / ($this->plot_max_x - $this->plot_min_x)) ;		//which with a little bit of math reduces to ...		if ($this->xscale_type == "log") { 			$x_pixels =  $this->plot_origin_x + log10($x_world) * $this->xscale ;		} else { 			$x_pixels =  $this->plot_origin_x + $x_world * $this->xscale ;		}		return($x_pixels);	}	function ytr($y_world) {		// translate y world coord into pixel coord		if ($this->yscale_type == "log") { 			$y_pixels =  $this->plot_origin_y - log10($y_world) * $this->yscale ;  //minus because GD defines y=0 at top. doh!		} else { 			$y_pixels =  $this->plot_origin_y - $y_world * $this->yscale ;  		}		return ($y_pixels);	}	function DrawDataLabel($lab,$x_world,$y_world) {		//Depreciated. Use DrawText Instead.		//Data comes in in WORLD coordinates		//Draw data label near actual data point			//$y = $this->ytr($y_world) ;  //in pixels			//$x = $this->xtr($x_world) ;			//$this->DrawText($which_font,$which_angle,$which_xpos,$which_ypos,$which_color,$which_size,$which_text,$which_halign='left');			if ($this->use_ttf) {//ajjjo				$lab_size = $this->TTFBBoxSize($this->axis_ttffont_size, $this->x_datalabel_angle, $this->axis_ttffont, $lab); //An array				$y = $this->ytr($y_world) - $lab_size[1] ;  //in pixels				$x = $this->xtr($x_world) - $lab_size[0]/2;				ImageTTFText($this->img, $this->axis_ttffont_size, $this->x_datalabel_angle, $x, $y, $this->ndx_text_color, $this->axis_ttffont, $lab);			} else {				$lab_size = array($this->small_font_width*StrLen($lab), $this->small_font_height*3);				if ($this->x_datalabel_angle == 90) {					$y = $this->ytr($y_world) - $this->small_font_width*StrLen($lab); //in pixels					$x = $this->xtr($x_world) - $this->small_font_height;					ImageStringUp($this->img, $this->small_font,$x, $y ,$lab, $this->ndx_text_color);				} else {					$y = $this->ytr($y_world) - $this->small_font_height; //in pixels					$x = $this->xtr($x_world) - ($this->small_font_width*StrLen($lab))/2;					ImageString($this->img, $this->small_font,$x, $y ,$lab, $this->ndx_text_color);				}			}	}	function DrawXDataLabel($xlab,$xpos) {		//xpos comes in in PIXELS not in world coordinates.		//Draw an x data label centered at xlab			if ($this->use_ttf) {				$xlab_size = $this->TTFBBoxSize($this->axis_ttffont_size,					$this->x_datalabel_angle, $this->axis_ttffont, $xlab); //An array				$y = $this->plot_area[3] + $xlab_size[1] + 4;  //in pixels				$x = $xpos - $xlab_size[0]/2;				ImageTTFText($this->img, $this->axis_ttffont_size,					$this->x_datalabel_angle, $x, $y, $this->ndx_text_color, $this->axis_ttffont, $xlab);			} else {				$xlab_size = array(ImageFontWidth($this->axis_font)*StrLen($xlab), $this->small_font_height*3);				if ($this->x_datalabel_angle == 90) {					$y = $this->plot_area[3] + ImageFontWidth($this->axis_font)*StrLen($xlab); //in pixels					$x = $xpos - ($this->small_font_height);					ImageStringUp($this->img, $this->axis_font,$x, $y ,$xlab, $this->ndx_text_color);				} else {					$y = $this->plot_area[3] + ImageFontHeight($this->axis_font); //in pixels					$x = $xpos - (ImageFontWidth($this->axis_font)*StrLen($xlab))/2;					ImageString($this->img, $this->axis_font,$x, $y ,$xlab, $this->ndx_text_color);				}			}	}	function DrawPieChart() {		//$pi = '3.14159265358979323846';		$xpos = $this->plot_area[0] + $this->plot_area_width/2;		$ypos = $this->plot_area[1] + $this->plot_area_height/2;		$diameter = (min($this->plot_area_width, $this->plot_area_height)) ;		$radius = $diameter/2;		ImageArc($this->img, $xpos, $ypos, $diameter, $diameter, 0, 360, $this->ndx_grid_color);		$total = 0;		reset($this->data_values);		$tmp = $this->number_x_points - 1;		while (list($j, $row) = each($this->data_values)) {			//Get sum of each type			$color_index = 0;			$i = 0;			//foreach ($row as $v) 			while (list($k, $v) = each($row)) {				if ($k != 0) {					if ($j == 0) { 						$sumarr[$i] = $v;					} elseif ($j < $tmp) { 						$sumarr[$i] += $v;					} else { 						$sumarr[$i] += $v;					// NOTE!  sum > 0 to make pie charts						$sumarr[$i] = abs($sumarr[$i]); 						$total += $sumarr[$i];					}				}			$i++;			}		}		$color_index = 0;		$start_angle = 0;		reset($sumarr);		$end_angle = 0;		while (list(, $val) = each($sumarr)) {			if ($color_index >= count($this->ndx_data_color)) $color_index=0;  //data_color = array			$label_txt = number_format(($val / $total * 100), $this->y_precision, ".", ",") . "%";			$val = 360 * ($val / $total);			$end_angle += $val;			$mid_angle = $end_angle - ($val / 2);			$slicecol = $this->ndx_data_color[$color_index];//Need this again for FillToBorder			ImageArc($this->img, $xpos, $ypos, $diameter, $diameter, 0, 360, $this->ndx_grid_color);			$out_x = $radius * cos(deg2rad($end_angle));			$out_y = - $radius * sin(deg2rad($end_angle));			$mid_x = $xpos + ($radius/2 * cos(deg2rad($mid_angle))) ;			$mid_y = $ypos + (- $radius/2 * sin(deg2rad($mid_angle)));			$label_x = $xpos + ($radius * cos(deg2rad($mid_angle))) * $this->label_scale_position;			$label_y = $ypos + (- $radius * sin(deg2rad($mid_angle))) * $this->label_scale_position;			$out_x = $xpos + $out_x;			$out_y = $ypos + $out_y;			ImageLine($this->img, $xpos, $ypos, $out_x, $out_y, $this->ndx_grid_color);			//ImageLine($this->img, $xpos, $ypos, $label_x, $label_y, $this->ndx_grid_color);			ImageFillToBorder($this->img, $mid_x, $mid_y, $this->ndx_grid_color, $slicecol);			if ($this->use_ttf) {				ImageTTFText($this->img, $this->axis_ttffont_size, 0, $label_x, $label_y, $this->ndx_grid_color, $this->axis_ttffont, $label_txt);			} else {				ImageString($this->img, $this->small_font, $label_x, $label_y, $label_txt, $this->ndx_grid_color);			}			$start_angle = $val;			$color_index++;		}	}	function DrawLinesError() {		//Draw Lines with Error Bars - data comes in as array("title",x,y,error+,error-,y2,error2+,error2-,...);		$start_lines = 0;		reset($this->data_values);		while (list(, $row) = each($this->data_values)) {			$color_index = 0;			$i = 0;			while (list($key, $val) = each($row)) {//echo "$key, $i, $val<br>";				if ($key == 0) {					$lab = $val;				} elseif ($key == 1) {					$x_now = $val;					$x_now_pixels = $this->xtr($x_now); //Use a bit more memory to save 2N operations.				} elseif ($key%3 == 2) {					$y_now = $val;					$y_now_pixels = $this->ytr($y_now);					//Draw Data Label					if ( $this->draw_data_labels == 1) {						$this->DrawDataLabel($lab,$x_now,$y_now);					}					if ($color_index >= count($this->ndx_data_color)) { $color_index=0;};					$barcol = $this->ndx_data_color[$color_index];					$error_barcol = $this->ndx_error_bar_color[$color_index];//echo "start = $start_lines<br>";					if ($start_lines == 1) {						for ($width = 0; $width < $this->line_width; $width++) {							ImageLine($this->img, $x_now_pixels, $y_now_pixels + $width,								$lastx[$i], $lasty[$i] + $width, $barcol);						}					}					$lastx[$i] = $x_now_pixels;					$lasty[$i] = $y_now_pixels;					$color_index++;					$i++;					$start_lines = 1;				} elseif ($key%3 == 0) {					$this->DrawYErrorBar($x_now,$y_now,$val,$this->error_bar_shape,$error_barcol);				} elseif ($key%3 == 1) {					$this->DrawYErrorBar($x_now,$y_now,-$val,$this->error_bar_shape,$error_barcol);				}			}		}	}	function DrawDotsError() {		//Draw Dots - data comes in as array("title",x,y,error+,error-,y2,error2+,error2-,...);		reset($this->data_values);		while (list(, $row) = each($this->data_values)) {			$color_index = 0;			//foreach ($row as $v) 			while (list($key, $val) = each($row)) {				if ($key == 0) {				} elseif ($key == 1) {					$xpos = $val;				} elseif ($key%3 == 2) {					if ($color_index >= count($this->ndx_data_color)) $color_index=0;					$barcol = $this->ndx_data_color[$color_index];					$error_barcol = $this->ndx_error_bar_color[$color_index];					$ypos = $val;					$color_index++;					$this->DrawDot($xpos,$ypos,$this->point_shape,$barcol);				} elseif ($key%3 == 0) {					$this->DrawYErrorBar($xpos,$ypos,$val,$this->error_bar_shape,$error_barcol);				} elseif ($key%3 == 1) {					$mine = $val ;					$this->DrawYErrorBar($xpos,$ypos,-$val,$this->error_bar_shape,$error_barcol);				}			}		}	}	function DrawDots() {		//Draw Dots - data comes in as array("title",x,y1,y2,y3,...);		reset($this->data_values);		while (list($j, $row) = each($this->data_values)) {			$color_index = 0;			//foreach ($row as $v) 			while (list($k, $v) = each($row)) {				if ($k == 0) {				} elseif (($k == 1) && ($this->data_type == "data-data"))  { 					$xpos = $v;				} else {					if ($this->data_type == "text-data") { 						$xpos = ($j+.5); 					} 					if ($color_index >= count($this->ndx_data_color)) $color_index=0;					$barcol = $this->ndx_data_color[$color_index];					//if (is_numeric($v))  //PHP4 only					if ((strval($v) != "") ) {   //Allow for missing Y data 						$this->DrawDot($xpos,$v,$this->point_shape,$barcol);					}					$color_index++;				}			}		}	} //function DrawDots	function DrawDotSeries() {		//Depreciated: Use DrawDots		$this->DrawDots();	}	function DrawThinBarLines() {

⌨️ 快捷键说明

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