博客搬家了,欢迎大家关注,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. Redhat环境下编译安装Google Bazel

    Redhat环境下编译安装bazel 作者:Jack47 目前Google Bazel没有提供各个操作系统下的二进制安装包,只提供源代码,需要我们自己编译安装,详情可以见我翻译的中文版Google B ...

  2. VBA批量查找和复制文件

    Function findAndCopy(srcFile As String, destFile As String, cmdFile As String) Dim WSH As Object, wE ...

  3. 完成AngularJS with MVC 5, Web API 2项目

    经过接近两个月的日夜奋战,完成AngularJS with MVC 5, Web API 2的项目,这也是进入公司以后最大的一个项目,从项目需求.用户Prototype/Demo,招人,开发完成,可谓 ...

  4. 浅析MSIL中间语言——PE文件结构篇

    一.开篇 开篇我想讲一下于本文无关的话题,其实我很想美化一下自己博客园一直没时间弄,无意间找了博客园李宝亨的博客园里面有一篇分享自己主题的文章,我就将这个模板暂时用作我的blog主题,我要讲述一个关于 ...

  5. 小型单文件NoSQL数据库SharpFileDB初步实现

    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...

  6. 前nginx后Apache+Node反向代理

    前几天一直在被一个问题困扰,机器上跑的站点太多了,Apache上面有十几个,NodeJS的也有一堆,记端口号都要烦死,于是萌生了使用反向代理的想法.出发点貌似太low了,完全不是出于负载均衡.高并发什 ...

  7. ASP.NET MVC 5 - 给数据模型添加校验器

    在本节中将会给Movie模型添加验证逻辑.并且确保这些验证规则在用户创建或编辑电影时被执行. 拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY ...

  8. HttpResponseMessage 调用.net web api

    // // GET: /Home/ //释迦苦僧 public ActionResult Index() { HttpClient client = new HttpClient(); client. ...

  9. Sql Server系列:自定义函数

    用户自定义函数可以像系统函数一样在查询或存储过程中调用,可以接受参数.执行操作并将操作结果以值的形式返回.返回值可以是单个标量或结果集. 1. 标量函数 标量函数返回一个确定类型的标量值,对于多语句的 ...

  10. TSQL语句

    1.创建数据库create database test3;2.删除数据库drop database test3;3.创建表create table test(    code varchar(20), ...