📄 panachart.php
字号:
} // plot grid if($this->m_showHGrid){ for($i=0; $i<=$maxvalues; $i++){ _set_style($this->m_image,$this->m_gridHStyle, $this->m_gridHColor, $this->m_fillColor); imageline($this->m_image, $marginx, $marginy+$height - $i*$h, $marginx+$width, $marginy+$height - $i*$h, IMG_COLOR_STYLED); } } if($this->m_showVGrid){ for($i=0; $i<count($this->m_labels); $i++){ $len = strlen($this->m_labels[$i]); if($len > 0){ _set_style($this->m_image,$this->m_gridVStyle, $this->m_gridVColor, $this->m_fillColor); imageline($this->m_image, $marginx+$i*$w+$dx/2+$sx, $height+$marginy, $i*$w+$marginx+$dx/2+$sx, $marginy, IMG_COLOR_STYLED); } } } _set_style($this->m_image,$this->m_style, $this->m_strokeColor, $this->m_fillColor); imagerectangle($this->m_image, $marginx, $marginy, $marginx + $width, $marginy+$height , IMG_COLOR_STYLED); // plot graph foreach($this->m_series as $series){ $cnt = count($series->m_values); // LINE PLOT if($series->m_type == 'line'){ _set_style($this->m_image,$series->m_style,$series->m_strokeColor, $this->m_fillColor); $startx = $marginx+$dx/2+$sx ; $starty = $marginy+$height-$dy*($series->m_values[0]-$min); for($i=1; $i<$cnt; $i++){ $x = $marginx+$i*$w+$dx/2+$sx; $y = $marginy+$height-$dy*($series->m_values[$i]-$min); imageline($this->m_image,$startx, $starty, $x, $y,IMG_COLOR_STYLED); $startx = $x; $starty = $y; } // AREA PLOT }else if($series->m_type == 'area'){ _set_style($this->m_image,$series->m_style,$series->m_strokeColor, $this->m_fillColor); $vpoints = ''; $startx = $marginx+$dx/2+$sx ; $starty = $marginy+$height-$dy*($series->m_values[0]-$min); $vpoints[] = $startx; $vpoints[] = $marginy+$height; for($i=0; $i<$cnt; $i++){ $x = $marginx+$i*$w+$dx/2+$sx; $y = $marginy+$height-$dy*($series->m_values[$i]-$min); $vpoints[]=$x; $vpoints[]=$y; $startx = $x; $starty = $y; } $vpoints[] = $x; $vpoints[] = $marginy+$height; imagefilledpolygon ( $this->m_image, $vpoints, $cnt+2, $series->m_fillColor); imagepolygon ( $this->m_image, $vpoints, $cnt+2, IMG_COLOR_STYLED); // BAR PLOT }else if($series->m_type == 'bar'){ _set_style($this->m_image,$series->m_style,$series->m_strokeColor, $this->m_fillColor); $vpoints = ''; for($i=0; $i<$cnt; $i++){ imagefilledrectangle($this->m_image, $sx + $marginx+$i*$w, $marginy+$height-$dy*($series->m_values[$i]-$min), $sx + $marginx+$i*$w+$dx, $marginy+$height, $series->m_fillColor); imagerectangle($this->m_image, $sx + $marginx+$i*$w, $marginy+$height-$dy*($series->m_values[$i]-$min), $sx + $marginx+$i*$w+$dx, $marginy+$height, IMG_COLOR_STYLED); } // IMPULS PLOT }else if($series->m_type == 'impuls'){ _set_style($this->m_image,$series->m_style,$series->m_fillColor,$this->m_fillColor); for($i=0; $i<$cnt; $i++){ $x = $marginx+$i*$w+$dx/2+$sx; $y = $marginy+$height-$dy*($series->m_values[$i]-$min); imageline($this->m_image,$x, $y, $x, $marginy+$height, IMG_COLOR_STYLED); } // STEP PLOT }else if($series->m_type == 'step'){ _set_style($this->m_image,$series->m_style, $series->m_strokeColor,$this->m_fillColor); $cnt = $cnt; $vpoints = ''; $startx = $marginx+$sx/2 ; $starty = $marginy+$height-$dy*($series->m_values[0]-$min); $vpoints[] = $startx; $vpoints[] = $marginy+$height; $vpoints[] = $startx; $vpoints[] = $starty; for($i=1; $i<$cnt; $i++){ $x = $marginx+$i*$w+$sx/2; $y = $marginy+$height-$dy*($series->m_values[$i]-$min); $vpoints[]=$x; $vpoints[]=$starty; $vpoints[]=$x; $vpoints[]=$y; $startx = $x; $starty = $y; } $vpoints[] = $x+$w; $vpoints[] = $y; $vpoints[] = $x+$w; $vpoints[] = $marginy+$height; imagefilledpolygon ( $this->m_image, $vpoints, $cnt*2+2, $series->m_fillColor); imagepolygon ( $this->m_image, $vpoints, $cnt*2+2, IMG_COLOR_STYLED); // DOT PLOT }else if($series->m_type == 'dot'){ _set_style($this->m_image,$series->m_style, $series->m_strokeColor,$this->m_fillColor); for($i=0; $i<$cnt; $i++){ $x = $marginx+$i*$w+$dx/2+$sx; $y = $marginy+$height-$dy*($series->m_values[$i]-$min); imagerectangle($this->m_image,$x-2, $y-2, $x+2, $y+2, IMG_COLOR_STYLED); imagefilledrectangle($this->m_image,$x-1, $y-1, $x+1, $y+1, $series->m_fillColor); } } } // plot X labels for($i=0; $i<count($this->m_labels); $i++){ $len = strlen($this->m_labels[$i]); if($len > 0){ _set_style($this->m_image,$this->m_axisXStyle, $this->m_axisXColor, $this->m_fillColor); imageline($this->m_image, $dx/2+$sx+$marginx+$i*$w, $height+$marginy, $dx/2+$sx+$i*$w+$marginx, $height+$marginy+3, IMG_COLOR_STYLED); if($this->m_labelsDirection == HORIZONTAL){ imagestring ($this->m_image, $this->m_labelsFont, $dx/2+$sx+$marginx+$i*$w-$len*$this->m_labelsFontWidth/2, $marginy+4+$height, $this->m_labels[$i], $this->m_labelsTextColor); }else{ imagestringup ($this->m_image, $this->m_labelsFont, $dx/2+$sx+$marginx+$i*$w-$this->m_labelsFontHeight/2, $marginy + $height + $len*$this->m_labelsFontWidth + 4, $this->m_labels[$i], $this->m_labelsTextColor); } } } // plot X axis if($this->m_showXAxis){ _set_style($this->m_image,$this->m_axisXStyle, $this->m_axisXColor, $this->m_fillColor); imageline($this->m_image, $marginx, $marginy+$height, $marginx + $width, $marginy+$height, IMG_COLOR_STYLED); if($this->m_axisXTitle){ imagestring($this->m_image, $this->m_axisXFont, $marginx + ($width - strlen($this->m_axisXTitle) * $this->m_axisXFontWidth)/2, $this->m_height - $margin - $this->m_axisXFontHeight, $this->m_axisXTitle, $this->m_axisXColor); } } // plot Y axis if($this->m_showYAxis){ _set_style($this->m_image,$this->m_axisYStyle, $this->m_axisYColor, $this->m_fillColor); imageline($this->m_image, $marginx, $marginy, $marginx, $marginy+$height, IMG_COLOR_STYLED); if($this->m_axisYTitle){ $titlewidth = strlen($this->m_axisYTitle) * $this->m_axisYFontWidth; imagestringup ($this->m_image, $this->m_axisYFont, $margin, $marginy + $titlewidth + ($height-$titlewidth)/2, $this->m_axisYTitle, $this->m_axisYColor); } } $image_function = 'image' . osc_dynamic_image_extension(); if(strlen($file) > 0){ $image_function($this->m_image, $file); }else{ $image_function($this->m_image); } }}function _min(&$vvalues){ $min = $vvalues[0]; foreach($vvalues as $value){ if ($min > $value){ $min = $value; } } return $min;}function _max(&$vvalues){ $max = $vvalues[0]; foreach($vvalues as $value){ if ($max < $value){ $max = $value; } } return $max;}function _maxlen(&$vvalues){ $max = strlen($vvalues[0]); foreach($vvalues as $value){ if ($max < strlen($value)){ $max = strlen($value); } } return $max;}function _decode_color($scolor){ $istart = 0; if($scolor[0] == '#'){ $istart++; } $r = hexdec(@substr($scolor, $istart , 2)); $g = hexdec(@substr($scolor, $istart +2, 2)); $b = hexdec(@substr($scolor, $istart +4, 2)); $vcolor = array($r, $g, $b); return ( $vcolor );}function _set_style($img,$style,$fore,$back){ switch($style){ case DASHED: $thickness = 1; $istyle = array ($fore,$fore,$fore,$fore,$fore, $back,$back,$back,$back,$back); break; case MEDIUM_DASHED: $thickness = 2; $istyle = array ($fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore, $back,$back,$back,$back,$back,$back,$back,$back); break; case LARGE_DASHED: $thickness = 3; $istyle = array ($fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore, $back,$back,$back,$back,$back,$back,$back,$back,$back,$back,$back,$back); break; case DOTTED: $thickness = 1; $istyle = array ($fore,$back,$back); break; case MEDIUM_DOTTED: $thickness = 2; $istyle = array ($fore,$fore,$fore,$fore, $back,$back,$back,$back); break; case LARGE_DOTTED: $thickness = 3; $istyle = array ($fore,$fore,$fore,$fore,$fore,$fore, $back,$back,$back,$back,$back,$back); break; case SOLID: $thickness=1; $istyle = array ($fore,$fore);break; case MEDIUM_SOLID: $thickness=2; $istyle = array ($fore,$fore);break; case LARGE_SOLID: $thickness=3; $istyle = array ($fore,$fore);break; default: $thickness=1; $istyle = array ($fore,$fore);break; } imagesetthickness ($img, $thickness); imagesetstyle ($img, $istyle);}function _imageline($img,$x0,$y0,$x1,$y1,$style,$fore,$back){ imageline($img, $x0,$y0,$x1,$y1,IMG_COLOR_STYLED);}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -