怎么样用php做较大量数据的统计并且绘出图表

「已注销」 2002-12-18 08:42:29
我正打算做一统计系统,怎么样用php做较大量数据的统计并且绘出图表.

我是这样想的,数据源估计是从EXECEL里面导出来的,然后根据数据生成柱形的图表,

不知各位有没有好的法子,高分相送~!
...全文
433 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2002-12-21
  • 打赏
  • 举报
回复
test
「已注销」 2002-12-20
  • 打赏
  • 举报
回复
呵呵,guyanduzui(孤雁独醉西楼下)。我喜欢你上面的代码,谢谢关注,这样的代码有助于我项目的进度。过两天结贴了。各位都有高分~!希望有更好办法的或者有好的思路的请写下。
「已注销」 2002-12-20
  • 打赏
  • 举报
回复
好~!好~!提的好,还有一天结贴了,各位有好办法快快提哈~!呵~!
wuxyun 2002-12-20
  • 打赏
  • 举报
回复
用GD
可用画直线的函数,作出坐标;
数据库的资料先进行算术计算;
用画直线的函数,作折线图;
用画矩形的函数,作柱图;
用画扇形的函数,作饼图。
也可用调用COM的方法,
也要先分析;
将数据导入EXECEL的图表模板。
uGain 2002-12-19
  • 打赏
  • 举报
回复
現在的php版本都帶有GD庫,只要把php.ini中;extension=php_gd.dll前的;去掉就行了。不過要生成gif圖片的話,就要去下載專門的php_gif_gd.dll,因爲gif格式的圖片是有版權的。
「已注销」 2002-12-19
  • 打赏
  • 举报
回复
OK.谢谢关注~!
ly_zhky 2002-12-19
  • 打赏
  • 举报
回复
关注!
guyanduzui 2002-12-19
  • 打赏
  • 举报
回复
<?
//由flag变量来控制显示哪一组数据
/*
函数说明
$data1:y轴数据(数组)
$data2:y轴数据(数组)
$graphdata:y轴数据--百分比(数组)
$label:x轴数据(数组)
$height:图像高度
$width:图像宽度
$font:字号
$dot:决定点的大小
$bg:背景色
$line1 :线色1
$line2:线色2
$line;线色
$text :文本色
$dotcolor:点色
$file:输出图像文件名
*/
$data1=array(33,433,34,434,33,2,1,55);
$data2=array(343,33,2434,33,33,22,33);

$limit1=count($data1);
for($i=0;$i<$limit1;$i++){
$s=$s+$data1[$i];
} //进行统计和$s
for($i=0;$i<$limit1;$i++){
$graphdata1[$i]=ceil(($data1[$i]/($s+1))*100);
} //计算百分比
$limit2=count($data2);
for($i=0;$i<$limit2;$i++){
$s=$s+$data2[$i];
} //进行统计$s
for($i=0;$i<$limit2;$i++){
$graphdata2[$i]=ceil(($data2[$i]/($s+1))*100);
}
//计算百分比
for($i=1;$i<500;$i++){
$label[]=$i;
}
//$label=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52);
//图像尺寸
$font=2;//字体大小(1-5))
$dot=5;//点大小
$bg=array(0,0,0);//背景色
$line=array(0,255,255);
$line1=array(250,250,100);//线色1
$line2=array(250,250,250);//线色2

$text=array(255,255,255);//文本色
$dotcolor=array(250,255,255);//点色
xianxingtu($data1 ,
$data2,
$graphdata1,
$graphdata2 ,
$label,
$height,
$width ,
$font,
$dot,
$bg,
$line,
$line1,
$line2,
$text,
$dotcolor,
$file) ;//引用函数

function xianxingtu($data1 ,
$data2,
$graphdata1,
$graphdata2,
$label ,
$height,
$width ,
$font,
$dot,
$bg,
$line,
$line1,
$line2,
$text,
$dotcolor,
$file)
{
$jc=$height/100;
$fontwidth= imagefontwidth ($font);
$fontheight=imagefontheight($font); //定义宽高

$image= imagecreate ($width,$height+20); //创建图像
$bg= imagecolorallocate($image ,$bg[0],$bg[1],$bg[2]);

$line=imagecolorallocate($image ,$line[0],$line[1],$line[2]);

$line1=imagecolorallocate($image ,$line1[0],$line1[1],$line1[2]);
$line2=imagecolorallocate($image ,$line2[0],$line2[1],$line2[2]);
$text=imagecolorallocate($image ,$text[0],$text[1],$text[2]);
$dotcolor=imagecolorallocate($image ,$dotcolor[0],$dotcolor[1],$dotcolor[2]);//设定颜色
imageline ($image,0,0,0,$height,$line); //绘一条从(00)到(0高)的线
imageline($image,0,$height,$width,$height,$line); //绘一条从(0高)到(宽高)的线
for ($i=1;$i<11;$i++) {
imagedashedline($image,0,$height - $jc*$i*10 ,$width ,$height -$jc*$i*10 ,$line);
imagestring ($image,$font,0,$height-$jc*$i*10,$i*10,$text);
} //此函数划虚线并以$font字号把图像平均分成十分,标上文字
for ($i=0;$i<count($data1);$i++){
#echo $tmp."<BR>";
$x1=(($width-50)/count($data1))*($i)+40;
#echo $x1 ."<BR>";
$y1=$height-$graphdata1[$i]*$jc;
$x2=$x1;
$y2=$y1+$graphdata1[$i]*$jc;
#echo $y1."<BR>";
imagestring($image, $font, $x1, $y1-2*$fontheight, $data1[$i] , $text);
imagearc ($image, $x1, $y1, $dot, $dot, 0 , 360, $dotcolor); //画椭圆
imagefilltoborder($image, $x1, $y1, $dotcolor, $dotcolor);//填充
imagestring($image, $font, $x1, $y2, $label[$i], $text);
if ($i>0) {
imageline($image, $tmpx1, $tmpy1, $x1, $y1, $line1);
}

$tmpx1=$x1;$tmpy1=$y1;
}


for ($i=0;$i<count($data2);$i++){
#echo $tmp."<BR>";
$x1=(($width-50)/count($data2))*($i)+40;
#echo $x1 ."<BR>";
$y1=$height-$graphdata2[$i]*$jc;
$x2=$x1;
$y2=$y1+$graphdata2[$i]*$jc;
#echo $y1."<BR>";
imagestring($image, $font, $x1, $y1-2*$fontheight, $data2[$i] , $text);
imagearc ($image, $x1, $y1, $dot, $dot, 0 , 360, $dotcolor); //画椭圆
imagefilltoborder($image, $x1, $y1, $dotcolor, $dotcolor);
imagestring($image, $font, $x1, $y2, $label[$i], $text);
if ($i>0) {
imageline($image, $tmpx1, $tmpy1, $x1, $y1, $line2);
}
$tmpx1=$x1;$tmpy1=$y1;
}
imagejpeg ($image);
}

线性图图示;
只是思路,没有测试;
tntxhy 2002-12-19
  • 打赏
  • 举报
回复
如果并非一定要生成的是柱形的图片,可以考虑用改变一个固定图片的宽或者高来实现画图。
telescope 2002-12-19
  • 打赏
  • 举报
回复
对于数据库来说,数据量的大小不是什么障碍,关键是动态地生成图表.
生成图表的例子到处都是,在运行生成图表的程序之前,你的PHP需要一个GD库
profans 2002-12-19
  • 打赏
  • 举报
回复
关注中。。。我也遇到这样的项目。
xqi8 2002-12-19
  • 打赏
  • 举报
回复
gz
ThinkPHP6内核学生成绩管理系统源码 一款注重优化成绩采集方法、丰富成绩分析维度的成绩统计系统,力争到符合教师工作习惯、使用方法简单、数据分析多样、分析结果科学,为教师的试卷分析、教育科研提供数据参考。 统计学生成绩是教育教学过程中不可缺少的一项工作,它为教师的教与学生的学提供数据参考。同时这又是一项比较复杂、繁琐的工作,成绩的录入、统计、保存占用教师大量时间与精力。我们希望能从教师工作习惯出发,提供多种成绩采集方式、丰富的统计项目、直观的统计图表,和长期、安全的数据存储方式。 这个项目前端采用 X-admin2.2 、后端采用ThinkPHP6.0 框架开发。 主要功能: 1、设置系统信息 2、单位信息管理、类别管理 3、学期、班级、学科管理、班级历次考试成绩查询 4、管理员、权限、角色管理 5、教师与学生信息管理、学生历次成绩查询 6、考试信息设置 7、设置参加考试学科及各学科的满分、优秀、及格分数线。 8、生成学生的考试号、试卷标签、成绩采集表 9、在线录入和修改成绩、表格录入成绩、使用扫码枪录入成绩 10、查看成绩列表、成绩图表 11、查看成绩统计结果(数据表格、统计表) 12、查看学生历次成绩(数据表格、统计表)、学生成绩报告 13、成绩呈现形式:得分、得分率、优秀率、及格率、总分、平均分、中位数、众数、标准差、各分数段成绩数…… 14、教师和学生登录后查询成绩
ONES是一套开源ERP系统,为您提供ERP、CRM、OA、HRM等解决方案,项目前端基于AngularJS+Bootstrap,后端使用PHP+MySQL,使用ThinkPHP框架,基于B/S架构,客户端无缝跨平台,支持现代浏览器。ONES 0.3 主要更新内容:2015-03-22基础框架:•优化:前端样式重写,去除ACE Admin代码(因授权问题)•优化:控制面板模块支持拖放及缩放操作,并自动持久化+本地化存储•优化:一级导航栏分离至页面顶部,优化操作体验,不再出现多级寻找菜单问题•优化:二级/三级导航菜单图标支持•新增:支持自定义数字型数据小数点保留位•新增:页内增加当前模块WIKI,讨论区,在线支持等,使用者可随时获得使用帮助•大量BUG修复及操作优化可安装应用:•订单支持是否含税•出/入库单据支持批量选择仓库•全新的AnalyticsAPI应用,为其他各应用提供统计图表接口,其他应用不再需要手动编写统计图表部分代码,通过约定和配置可完整实现。特色:* 致力于解决实际问题* APP化的项目组成+灵活的前后端插件机制* 灵活的RBAC+工作流节点权限+行级权限扩展接口组合进行权限管理* 应用支持无修改原版本文件进行二次开发* 独特的通用视图功能,无需重复编写的前端文件* 强大可定制的工作流引擎* 灵活的数据模型功能,可方便实现数据字段扩展

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧