好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php生成折线图 php画折线图

很多站长朋友们都不太清楚php生成折线图,今天小编就来给大家整理php生成折线图,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php jpgraph画折线图mark引用图片问题 2、 如何制作折线统计图 3、 PHP中图像处理怎么写一个折线统计图 4、 高手请进!用PHP如何绘制折线图?? - PHP进阶讨论 5、 通过php读取本地数据库的坐标后,如何绘制折线 6、 php读取mysql数据库绘制出近7天的折线图 php jpgraph画折线图mark引用图片问题

可以的, 首先定义共有几种情况,然后给一个标识,在显示图片时间可以用一个函数来判断标识显示不同图片,类似QQ的VIP图标 vip0.jpg vip1.jpg 等

如何制作折线统计图

画画方法见下面:

根据统计资料整理数据。先画横轴,后画纵轴,纵、横轴都要有单位,按纸面的大小来确定用一定单位表示一定的数量。根据数量的多少,在纵、横轴的恰当位置描出各点,然后把各点用线段顺次连接起来。

折线统计图是用折线的升降来表示统计数据变动趋势的图形,也叫曲线统计图。折线图可分为动态折线图、依存关系折线图和次数分布折线图。

PHP中图像处理怎么写一个折线统计图

在PHP中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库。除了安装GD库之外,在PHP中还可能需要其他的库,这可以根据需要支持哪些图像格式而定。GD库可以网上免费下载,不同的GD版本支持的图像格式不完全一样,最新的GD库版本支持GIF、JPEG、PNG、WBMP、XBM等格式的图像文件,此外还支持一些如FreeType、Type 1等字体库。通过GD库中的函数可以完成各种点、线、几何图形、文本及颜色的操作和处理,也可以创建或读取多种格式的图像文件。

在PHP中,通过GD库处理图像的操作,都是先在内存中处理,操作完成以后再以文件流的方式,输出到浏览器或保存在服务器的磁盘中。创建一个图像应该完成如下所示的4个基本步骤。

(1)创建画布:所有的绘图设计都需要在一个背景图片上完成,而画布实际上就是在内存中开辟的一块临时区域,用于存储图像的信息。以后的图像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时使用的画布。

(2)绘制图像:画布创建完成以后,就可以通过这个画布资源,使用各种画像函数设置图像的颜色、填充画布、画点、线段、各种几何图形,以及向图像中添加文本等。

(3)输出图像:完成整个图像的绘制以后,需要将图像以某种格式保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给用户。但在图像输出之前,一定要使用header()函数发送Content-type通知浏览器,这次发送的是图片不是文本。

(4)释放资源:图像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,需要及时清除画布占用的所有内存资源。

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('#DC', '#B', '#EDB', '#DDDF', '#CBE', '#E', '#FF', '#FFF', '#AFC');

}

/*

* 公有方法,设置条形图的颜色

* Array color 颜色数组,元素取值为'#DC'这种形式

*/

function setBarColor($color){

$this->color = $color;

}

/*

* 绘制折线图

*/

public function paintLineChart() {

$ydataNum = $this->arrayNum($this->ydata); // 取得数据分组的个数

$max = $this->arrayMax($this->ydata); // 取得所有呈现数据的最大值

$max = ($max > )? $max : ;

$multi = $max/; // 如果最大数据是大于的则进行缩小处理

$barHeightMulti = .; // 条形高缩放的比例

$lineWidth = ;

$chartLeft = (+strlen($max))*; // 设置图片左边的margin

$lineY = ; // 初始化条形图的Y的坐标

// 设置图片的宽、高

//$this->width = $lineWidth*count($this->xdata) + $chartLeft - $lineWidth/.;

$margin = ; // 小矩形描述右边margin

$recWidth = ; // 小矩形的宽

$recHeight = ; // 小矩形的高

$space = ; // 小矩形与条形图的间距

$tmpWidth = ;

// 设置图片的宽、高

$lineChartWidth = $lineWidth*count($this->xdata) + $chartLeft - $lineWidth/. ;

// 两个系列数据以上的加上小矩形的宽

if($ydataNum > ) {

$tmpWidth = $this->arrayLengthMax($this->seriesName)**/ + $space + $recWidth + + $margin;

}

$this->width = $lineChartWidth + $tmpWidth;

$this->height = ;

$this->image = imagecreatetruecolor($this->width ,$this->height); // 准备画布

$this->bgcolor = imagecolorallocate($this->image,,,); // 图片的背景颜色

// 设置条形图的颜色

$color = array();

foreach($this->color as $col) {

$col = substr($col,,strlen($col)-);

$red = hexdec(substr($col,,));

$green = hexdec(substr($col,,));

$blue = hexdec(substr($col,,));

$color[] = imagecolorallocate($this->image ,$red, $green, $blue);

}

// 设置线段的颜色、字体的颜色、字体的路径

$lineColor = imagecolorallocate($this->image ,xcc,xcc,xcc);

$fontColor = imagecolorallocate($this->image, x,xf,xf);

$fontPath = 'font/simsun.ttc';

imagefill($this->image,,,$this->bgcolor); // 绘画背景

// 绘画图的分短线与左右边线

for($i = ; $i < ; $i++ ) {

imageline($this->image,$chartLeft-,$lineY-$barHeightMulti*$max//$multi*$i,$lineChartWidth,$lineY-$barHeightMulti*$max//$multi*$i,$lineColor);

imagestring($this->image,,,$lineY-$barHeightMulti*$max//$multi*$i-,floor($max/*$i),$fontColor);

}

imageline($this->image,$chartLeft-,,$chartLeft-,$lineY,$lineColor);

imageline($this->image,$lineChartWidth-,,$lineChartWidth-,$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 + + $lineWidth*$key;

imageline($this->image,$lineX,,$lineX,$lineY,IMG_COLOR_STYLED);

}

// 绘画图的折线

foreach($this->ydata as $key => $val) {

if($ydataNum == ) {

// 一个系列数据时

if($key == count($this->ydata) - ) break;

$lineX = $chartLeft + + $lineWidth*$key;

$lineY = $lineY-$barHeightMulti*($this->ydata[$key+])/$multi;

// 画折线

if($key == count($this->ydata) - ) {

imagefilledellipse($this->image,$lineX+$lineWidth,$lineY,,,$color[]);

}

imageline($this->image,$lineX,$lineY-$barHeightMulti*$val/$multi,$lineX+$lineWidth,$lineY,$color[]);

imagefilledellipse($this->image,$lineX,$lineY-$barHeightMulti*$val/$multi,,,$color[]);

}elseif($ydataNum > ) {

// 多个系列的数据时

foreach($val as $ckey => $cval) {

if($ckey == count($val) - ) break;

$lineX = $chartLeft + + $lineWidth*$ckey;

$lineY = $lineY-$barHeightMulti*($val[$ckey+])/$multi;

// 画折线

if($ckey == count($val) - ) {

imagefilledellipse($this->image,$lineX+$lineWidth,$lineY,,,$color[$key%count($this->color)]);

}

imageline($this->image,$lineX,$lineY-$barHeightMulti*$cval/$multi,$lineX+$lineWidth,$lineY,$color[$key%count($this->color)]);

imagefilledellipse($this->image,$lineX,$lineY-$barHeightMulti*$cval/$multi,,,$color[$key%count($this->color)]);

}

}

}

// 绘画条形图的x坐标的值

foreach($this->xdata as $key => $val) {

$lineX = $chartLeft + $lineWidth*$key + $lineWidth/ - ;

imagettftext($this->image,,-,$lineX,$lineY+,$fontColor,$fontPath,$this->xdata[$key]);

}

// 两个系列数据以上时绘制小矩形及之后文字说明

if($ydataNum > ) {

$x = $lineChartWidth + $space;

$y = ;

foreach($this->seriesName as $key => $val) {

imagefilledrectangle($this->image,$x,$y,$x+$recWidth,$y+$recHeight,$color[$key%count($this->color)]);

imagettftext($this->image,,,$x+$recWidth+,$y+$recHeight-,$fontColor,$fontPath,$this->seriesName[$key]);

$y += $recHeight + ;

}

}

// 绘画标题

$titleStart = ($this->width - .*strlen($this->title))/;

imagettftext($this->image,,,$titleStart,,$fontColor,$fontPath,$this->title);

// 输出图片

header("Content-Type:image/png");

imagepng ( $this->image );

}

/*

* 私有方法,当数组为二元数组时,统计数组的长度

* Array arr 要做统计的数组

*/

private function arrayNum($arr) {

$num = ;

if(is_array($arr)) {

$num++;

for($i = ; $i < count($arr); $i++){

if(is_array($arr[$i])) {

$num = count($arr);

break;

}

}

}

return $num;

}

/*

* 私有方法,计算数组的深度

* Array arr 数组

*/

private function arrayDepth($arr) {

$num = ;

if(is_array($arr)) {

$num++;

for($i = ; $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 = ;

if($depth == ) {

rsort($arr);

$max = $arr[];

}elseif($depth > ) {

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 = ;

foreach($arr as $val) {

$length = strlen($val) > $length ? strlen($val) : $length;

}

return $length/;

}

// 析构函数

function __destruct(){

imagedestroy($this->image);

}

}

测试代码如下:

$xdata = array('测试一','测试二','测试三','测试四','测试五','测试六','测试七','测试八','测试九');

$ydata = array(array(,,,,,,,,),array(,,,,,,,,));

$color = array();

$seriesName = array("七月","八月");

$title = "测试数据";

$Img = new Chart($title,$xdata,$ydata,$seriesName);

$Img->paintLineChart();

效果图如下:

到此代码结束。

下面给大家介绍php中GD库的一些简单使用

今天了解了一些GD库的简单使用,现在稍微做一下总结!

GD库是什么?,graphic device,图像工具库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上 GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

php并不局限于输出HTML文本。php通过使用GD扩展库还能用来动态输出图像,例如文字按钮、验证码、数据统计图等。哈可以轻松地编辑图像,力图处理缩略图和为图片添加水印等,具有强大的图像处理能力。

首先我们来说下GD库,绘制个简单图形的一些步骤:

1、首先是创建画布,此处我们利用imagecreatetruecolor函数,也可以利用imagecreate,区别在于前者创建了一个真彩图像,后者创建了一个基于调色板的图像

$img=imagecreatetruecolor(100,100),其中有两个参数分别对应,我们创建的图像的宽和高

2、设置一些必要的"染料盒"

其实就是定义一些之后会用到的填充颜色,此处我们统一定义在这个位置,此处我们利用imagecolorallocate函数

$white=imagecolorallocate($img,0xFF,0xFF,0xFF)或者可以使用RGB的颜色命名方式 如$white=imagecolorallocate($img,255,255,255);

$gray = imagecolorallocate($img, 0xC0, 0xC0, 0xC0);

$darkgray = imagecolorallocate($img, 0x90, 0x90, 0x90);

$navy = imagecolorallocate($img, 0x00, 0x00, 0x80);

$darknavy = imagecolorallocate($img, 0x00, 0x00, 0x50);

$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);

$darkred = imagecolorallocate($img, 0x90, 0x00, 0x00);

$black=imagecolorallocate($img,0x00,0x00,0x00);

此处我们定义多一些所需要的颜色

3、填充区域颜色,可以简单的理解为填充图片的背景颜色,利用imagefill函数

imagefill($img,0,0,$white),此处的0 0表示从坐标x y处开始填充背景色

4、绘制图形,例如绘制饼状图,所需要的是imagefilledarc函数

imagefilledarc()的参数相对来说较多,形如imagefilledarc($img,50,$i,100,50,0,45,$red,IMG_ARC_PIE);

其中分别表示以red颜色字img图像上绘制一个以50,$i为起点,以0 45角度这个范围内绘制弧线

5、期间我们还可以添加一些说明问题,比如水平的添加一个字符串,利用 imagestring($img,1,20,40,"hello,world!",$red),表示在img图片中以20 40为坐标,写上一个红色的hello,world!字样

6、就是讲图像输出

首先要告之浏览器要以何种图片格式输出,例如以png输出,则使用header("Content-type:image/png");

其次 将图片输出到浏览器中,imagepng($img);

最后,销毁图片,即释放该图片存储所占用的内存 imagedestroy(img);,

高手请进!用PHP如何绘制折线图?? - PHP进阶讨论

ARTICHOW比JPGRAPH生成的图象清晰,而且颜色鲜艳,但性能二这都差不多,ARTICHOW目前不支持中文,JPGRAPH支持中文

通过php读取本地数据库的坐标后,如何绘制折线

可以使用open chart flash插件。

画折线图,不推荐使用 jquery的折线图插件

答题不易,互相理解,您的采纳是我前进的动力,感谢您。

希望回答对你有帮助,如果有疑问,请继续追问

php读取mysql数据库绘制出近7天的折线图

弄了一上午,用的是原生php和highcharts,压缩包里有sql文件,望采纳 链接在这里下载

关于php生成折线图的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php生成折线图 php画折线图的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did208348
更新时间:2023-05-03   阅读:36次

上一篇: php代理类似ss php socket代理

下一篇:php代码风格检查 php示例代码

最新资料更新

  • 1.整站系统php源码 php企业网站整站源码
  • 2.php有关线程问题 php多线程
  • 3.php多线程上锁 php8 jit 多线程
  • 4.php队列和缓存 php中的九大缓存技术
  • 5.php翻译sdk php翻译成中文是什么意思
  • 6.php数据导出csv php导出大量数据
  • 7.qbapi.php的简单介绍
  • 8.php课堂系统 php网课系统
  • 9.php判断多个数字 php判断字符串是否为数字
  • 10.php微信推送提醒 php主动推送消息到安卓
  • 11.php加密12进 php加密解密
  • 12.php毫秒间隔 php时间距离现在
  • 13.php使用嵌套for php解析嵌套json
  • 14.php实现频率限制 php限制频繁访问
  • 15.web安全php Web安全原理分析与实践
  • 16.免费php空间shery 免费PHP空间 免备案 V52版本
  • 17.php下载liunx php下载器
  • 18.包含phpgabage的词条
  • 19.手机文件php怎么打开 手机php格式文件怎么打开
  • 20.天津php公司的 天津程序员公司

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]