php中用GD绘制折线图

时间:2022-09-10 16:24:40
博客搬家了,欢迎大家关注,https://bobjin.com

php中用GD绘制折线图,代码如下:

 Class Chart{
private $image; // 定义图像
private $title; // 定义标题
private $ydata; // 定义Y轴数据
private $xdata; // 定义X轴数据
private $seriesName; // 定义每个系列数据的名称
private $color; // 定义条形图颜色
private $bgcolor; // 定义图片背景颜色
private $width; // 定义图片的宽
private $height; // 定义图片的长 /*
* 构造函数
* String title 图片标题
* Array xdata 索引数组,X轴数据
* Array ydata 索引数组,数字数组,Y轴数据
* Array series_name 索引数组,数据系列名称
*/
function __construct($title,$xdata,$ydata,$seriesName) {
$this->title = $title;
$this->xdata = $xdata;
$this->ydata = $ydata;
$this->seriesName = $seriesName;
$this->color = array('#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4');
} /*
* 公有方法,设置条形图的颜色
* Array color 颜色数组,元素取值为'#058DC7'这种形式
*/
function setBarColor($color){
$this->color = $color;
}
/*
* 绘制折线图
*/
public function paintLineChart() {
$ydataNum = $this->arrayNum($this->ydata); // 取得数据分组的个数
$max = $this->arrayMax($this->ydata); // 取得所有呈现数据的最大值
$max = ($max > 100)? $max : 100;
$multi = $max/100; // 如果最大数据是大于100的则进行缩小处理
$barHeightMulti = 2.2; // 条形高缩放的比例
$lineWidth = 50;
$chartLeft = (1+strlen($max))*12; // 设置图片左边的margin $lineY = 250; // 初始化条形图的Y的坐标
// 设置图片的宽、高
//$this->width = $lineWidth*count($this->xdata) + $chartLeft - $lineWidth/1.6; $margin = 10; // 小矩形描述右边margin
$recWidth = 20; // 小矩形的宽
$recHeight = 15; // 小矩形的高
$space = 20; // 小矩形与条形图的间距
$tmpWidth = 0;
// 设置图片的宽、高
$lineChartWidth = $lineWidth*count($this->xdata) + $chartLeft - $lineWidth/1.6 ;
// 两个系列数据以上的加上小矩形的宽
if($ydataNum > 1) {
$tmpWidth = $this->arrayLengthMax($this->seriesName)*10*4/3 + $space + $recWidth + + $margin;
}
$this->width = $lineChartWidth + $tmpWidth; $this->height = 300;
$this->image = imagecreatetruecolor($this->width ,$this->height); // 准备画布
$this->bgcolor = imagecolorallocate($this->image,255,255,255); // 图片的背景颜色 // 设置条形图的颜色
$color = array();
foreach($this->color as $col) {
$col = substr($col,1,strlen($col)-1);
$red = hexdec(substr($col,0,2));
$green = hexdec(substr($col,2,2));
$blue = hexdec(substr($col,4,2));
$color[] = imagecolorallocate($this->image ,$red, $green, $blue);
} // 设置线段的颜色、字体的颜色、字体的路径
$lineColor = imagecolorallocate($this->image ,0xcc,0xcc,0xcc);
$fontColor = imagecolorallocate($this->image, 0x95,0x8f,0x8f);
$fontPath = 'font/simsun.ttc'; imagefill($this->image,0,0,$this->bgcolor); // 绘画背景 // 绘画图的分短线与左右边线
for($i = 0; $i < 6; $i++ ) {
imageline($this->image,$chartLeft-10,$lineY-$barHeightMulti*$max/5/$multi*$i,$lineChartWidth,$lineY-$barHeightMulti*$max/5/$multi*$i,$lineColor);
imagestring($this->image,4,5,$lineY-$barHeightMulti*$max/5/$multi*$i-8,floor($max/5*$i),$fontColor);
}
imageline($this->image,$chartLeft-10,30,$chartLeft-10,$lineY,$lineColor);
imageline($this->image,$lineChartWidth-1,30,$lineChartWidth-1,$lineY,$lineColor);
$style = array($lineColor,$lineColor,$lineColor,$lineColor,$lineColor,$this->bgcolor,$this->bgcolor,$this->bgcolor,$this->bgcolor,$this->bgcolor);
imagesetstyle($this->image,$style); // 绘制折线图的分隔线(虚线)
foreach($this->xdata as $key => $val) {
$lineX = $chartLeft + 3 + $lineWidth*$key;
imageline($this->image,$lineX,30,$lineX,$lineY,IMG_COLOR_STYLED);
} // 绘画图的折线
foreach($this->ydata as $key => $val) {
if($ydataNum == 1) {
// 一个系列数据时
if($key == count($this->ydata) - 1 ) break;
$lineX = $chartLeft + 3 + $lineWidth*$key;
$lineY2 = $lineY-$barHeightMulti*($this->ydata[$key+1])/$multi; // 画折线
if($key == count($this->ydata) - 2 ) {
imagefilledellipse($this->image,$lineX+$lineWidth,$lineY2,10,10,$color[0]);
}
imageline($this->image,$lineX,$lineY-$barHeightMulti*$val/$multi,$lineX+$lineWidth,$lineY2,$color[0]);
imagefilledellipse($this->image,$lineX,$lineY-$barHeightMulti*$val/$multi,10,10,$color[0]);
}elseif($ydataNum > 1) {
// 多个系列的数据时
foreach($val as $ckey => $cval) { if($ckey == count($val) - 1 ) break;
$lineX = $chartLeft + 3 + $lineWidth*$ckey;
$lineY2 = $lineY-$barHeightMulti*($val[$ckey+1])/$multi;
// 画折线
if($ckey == count($val) - 2 ) {
imagefilledellipse($this->image,$lineX+$lineWidth,$lineY2,10,10,$color[$key%count($this->color)]);
}
imageline($this->image,$lineX,$lineY-$barHeightMulti*$cval/$multi,$lineX+$lineWidth,$lineY2,$color[$key%count($this->color)]);
imagefilledellipse($this->image,$lineX,$lineY-$barHeightMulti*$cval/$multi,10,10,$color[$key%count($this->color)]);
}
} } // 绘画条形图的x坐标的值
foreach($this->xdata as $key => $val) {
$lineX = $chartLeft + $lineWidth*$key + $lineWidth/3 - 20;
imagettftext($this->image,10,-65,$lineX,$lineY+15,$fontColor,$fontPath,$this->xdata[$key]);
} // 两个系列数据以上时绘制小矩形及之后文字说明
if($ydataNum > 1) {
$x1 = $lineChartWidth + $space;
$y1 = 20 ;
foreach($this->seriesName as $key => $val) {
imagefilledrectangle($this->image,$x1,$y1,$x1+$recWidth,$y1+$recHeight,$color[$key%count($this->color)]);
imagettftext($this->image,10,0,$x1+$recWidth+5,$y1+$recHeight-2,$fontColor,$fontPath,$this->seriesName[$key]);
$y1 += $recHeight + 10;
}
} // 绘画标题
$titleStart = ($this->width - 5.5*strlen($this->title))/2;
imagettftext($this->image,11,0,$titleStart,20,$fontColor,$fontPath,$this->title); // 输出图片
header("Content-Type:image/png");
imagepng ( $this->image );
} /*
* 私有方法,当数组为二元数组时,统计数组的长度
* Array arr 要做统计的数组
*/
private function arrayNum($arr) {
$num = 0;
if(is_array($arr)) {
$num++;
for($i = 0; $i < count($arr); $i++){
if(is_array($arr[$i])) {
$num = count($arr);
break;
}
}
}
return $num;
} /*
* 私有方法,计算数组的深度
* Array arr 数组
*/
private function arrayDepth($arr) {
$num = 0;
if(is_array($arr)) {
$num++;
for($i = 0; $i < count($arr); $i++){
if(is_array($arr[$i])) {
$num += $this->arrayDepth($arr[$i]);
break;
}
}
}
return $num;
} /*
* 私有方法,找到一组中的最大值
* Array arr 数字数组
*/
private function arrayMax($arr) {
$depth = $this->arrayDepth($arr);
$max = 0;
if($depth == 1) {
rsort($arr);
$max = $arr[0];
}elseif($depth > 1) {
foreach($arr as $val) {
if(is_array($val)) {
if($this->arrayMax($val) > $max) {
$max = $this->arrayMax($val);
}
}else{
if($val > $max){
$max = $val;
}
}
}
}
return $max;
} /*
* 私有方法,求数组的平均值
* Array arr 数字数组
*/
function arrayAver($arr) {
$aver = array();
foreach($arr as $val) {
if(is_array($val)) {
$aver = array_merge($aver,$val);
}else{
$aver[] = $val;
}
}
return array_sum($aver)/count($aver);
} /*
* 私有方法,求数组中元素长度最大的值
* Array arr 字符串数组,必须是汉字
*/
private function arrayLengthMax($arr) {
$length = 0;
foreach($arr as $val) {
$length = strlen($val) > $length ? strlen($val) : $length;
}
return $length/3;
} // 析构函数
function __destruct(){
imagedestroy($this->image);
}
}

测试代码如下:

  $xdata = array('测试一','测试二','测试三','测试四','测试五','测试六','测试七','测试八','测试九');
$ydata = array(array(29,30,45,54,65,45,76,23,54),array(89,60,90,23,35,45,56,23,56));
$color = array();
$seriesName = array("七月","八月");
$title = "测试数据";
$Img = new Chart($title,$xdata,$ydata,$seriesName);
7 $Img->paintLineChart();

效果图如下:

aaarticlea/png;base64,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" alt="" />

博客搬家了,欢迎大家关注,https://bobjin.com

php中用GD绘制折线图的更多相关文章

  1. 用canvas绘制折线图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. PHP中用GD绘制饼图

    PHP中用GD绘制饼图,绘制的类见代码: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // ...

  3. UUChart的使用--iOS绘制折线图

    UUChart是一个用于绘制图表的第三方,尤其适合去绘制折线图. 二.下载地址: https://github.com/ZhipingYang/UUChartView 三.使用 第一步.首先我们将下载 ...

  4. html5绘制折线图

    html5绘制折线图详细代码 <html> <canvas id="a_canvas" width="1000" height="7 ...

  5. Android自己定义组件系列【9】——Canvas绘制折线图

    有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了非常多插件,可是非常多时候我们须要依据详细项目自己定义这些图表,这一篇文章我们一起来看看怎样在Android中使用Can ...

  6. JFreeChart绘制折线图实例

    JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...

  7. 【带着canvas去流浪】(2)绘制折线图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 3.1 一般折线图 3.2 用贝塞尔曲线绘制平滑折线图 四. 大数据量场景 示例代码托管在:https://github.com/dashnowo ...

  8. python使用matplotlib绘制折线图教程

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形.下面这篇文章主要介绍了python使用matplot ...

  9. 用PNChart绘制折线图

    写在前面 上一篇文章已经介绍过用PNChart绘制饼状图了,绘制折线图的步骤和饼状图的步骤是相似的,按照中的准备做好准备工作后就可以绘制折线图了. 开始使用 1.在view中声明一个PNLineCha ...

随机推荐

  1. Oracle11g 统计信息——统计信息自动收集任务

    参考文献: Oracle11g 统计信息(一)-----统计信息自动收集任务 背景: 在使用cacti监控oracle数据库IO的时候发现每天晚上10点钟的时候oracle数据库读写明显增加,如下图所 ...

  2. 【Android 界面效果35】管理Fragments

    http://www.cnblogs.com/mengdd/archive/2013/01/09/2853254.html

  3. HTTP&sol;2 对 Web 性能的影响(下)

    一.前言 我们在 HTTP/2 对 Web 性能的影响(上)已经和大家分享了一些关于 Http2 的二项制帧.多用复路以及 APM 工具等,本文作为姊妹篇,主要从 http2 对 Web 性能的影响. ...

  4. Python学习 - 编写一个简单的web框架(二)

    在上一篇日志中已经讨论和实现了根据url执行相应应用,在我阅读了bottle.py官方文档后,按照bottle的设计重写一遍,主要借鉴大牛们的设计思想. 一个bottle.py的简单实例 来看看bot ...

  5. js中对象相关

    对象的创建: var first=new Object(); var second={ a:"bbb", b:function(){...} } 对象的内容增加: first.na ...

  6. Unity对象池的实现

    对象池是一个单例类: using System.Collections; using System.Collections.Generic; using UnityEngine; public cla ...

  7. Python-Numpy数组计算

    一.NumPy:数组计算 1.NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础.2.NumPy的主要功能: ndarray,一个多维数组结构,高效且节省空间 无需循环 ...

  8. oracle删除表字段和oracle表增加字段

    这篇文章主要介绍了oracle表增加字段.删除表字段修改表字段的使用方法,大家参考使用吧   添加字段的语法:alter table tablename add (column datatype [d ...

  9. WEB测试用例设计总结

    1易用性 1.便于使用.理解.并能减少用户发生错误选择的可能性 2.当数据字段过多时,使用便于用户迅速吸取信息的方式表现信息,突出重点信息,标红等方式 3.显示与当前操作相关的信息,给出操作提示. 4 ...

  10. android 滑动冲突

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 通过move事件的 拦截. 在滑动组件中,重写 在拦截触摸事件的时候  这个方法, 然后 ...