Jpgraph
只要把example中的require_once路径改了就放进来用吧,我下的是最新版的jpgraph-3.5.0b1,反正测试嘛,我记得跟3.0.7还是有差别的,把文件名都重新命名过了,这个不错,原先都是example1~n,都不知道是个什么东西。好吧随便打开第一个文件accbarex1.php,是个柱状图BarPlot,还有其他LinePlot线性图,PiePlot饼状图等。代码很简单,传递数据->设置图的属性->设置图的节点属性->画图设置图的标题、字体、颜色等->展示,具体可以看下面的代码。就是中文有点纠结的,这个不是他的错,是我们的GD库编译的时候有问题,所以这里我把文字转为html实体展示。很简单吧,可以尝试下玩玩。
<?php // content="text/plain; charset=utf-8"
require_once ('../jpgraph.php');
require_once ('../jpgraph_bar.php');
$data1y=array(-8,8,9,3,5,3); //blue那条的数据
$data2y=array(18,20,16,10,5,6); //orange那条的数据
// Create the graph. These two calls are always required
$graph = new Graph(800,500); //大小 宽*高
$graph->SetScale("textlin"); //设置刻度模式 还有intint、linlin、log、lin、textlog等其他模式
$graph->SetShadow();
$graph->img->SetMargin(40,30,20,40); //设置图表边距,就跟css里margin属性是一样的
// Create the bar plots
$b1plot = new BarPlot($data1y); //创建新的BarPlot对象 各种不同图表就是通过调用不通对象实现的,BarPlot就是柱状的,还有LinePlot线性图,PiePlot饼状图
$b1plot->SetFillColor("orange"); //设置图的颜色
$b1plot->value->Show(); //展示
$b2plot = new BarPlot($data2y); //一样的
$b2plot->SetFillColor("blue");
$b2plot->value->Show();
// Create the grouped bar plot
$gbplot = new AccBarPlot(array($b1plot,$b2plot)); //开始画图了
$graph->Add($gbplot); //在统计图上绘制曲线
$graph->title->Set(iconv_arr("Phpwind 图表测试")); // 设置图表标题 这里iconv_arr是我自己加的,为了支持我们伟大的中文要把你的当前编码转化为html实体
$graph->xaxis->title->Set(iconv_arr("这个大概是月份吧")); //设置X轴标题
$graph->yaxis->title->Set(iconv_arr("这个是Y轴")); //设置Y轴标题
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体,这里字体默认是FF_FONT1,为了中文换成FF_SIMSUN
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); //设置X轴标题字体
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); //设置Y轴标题字体
$graph->Stroke(); //输出图像
function iconv_arr($data){
if(is_array($data)){
foreach($data as $k=>$v){
$data[$k] = iconv_arr($v);
}
}else{
$data = mb_convert_encoding($data, "html-entities","gbk" );
}
return $data;
}
二 pChart
2.1 介绍
2.3实例介绍
同样拿个实例介绍下,我用的是最新版的pChart
1.27哦,pChart的工作流程主要分为以下几步:
(1) 读取用于生成图表数据(数据库、文件)
(2) 设计图形
(3) 把数据导入图形
(4) 配置图形、文字样式
(5) 成功图形
同样pChart也是需要GD库支持的,所以中文乱码问题也是存在的,这边还是用上面那种方法解决哦,刚用Jpgraph画过一个柱形图,那现在搞一个饼图玩玩吧。
<?php
include("pChart/pData.class");
//数据类
include("pChart/pChart.class");
//画图类
//准备好画图的数据
$arr1
= array(15,8,3,2,1); // 对应数据
$arr2
= iconv_arr(array('B2B','淘宝','支付宝','阿里云','其他'));
//数据的文字,和数据位置对应,这里也用了iconv_arr转换中文
//第一步 获得饼图数据
$data
= new pdata;
$data->AddPoint($arr1,"serie1");
//装入数据并命名为serie1
$data->AddPoint($arr2,"serie2");
//装入说明并命名为serie2
$data->AddAllSeries(); //提交数据
$data->SetAbsciseLabelSerie("serie2"); //设置标签
//第二步 画图形框架
$im
= new pchart(400,300); //创造一个画布并赋予尺寸
$im->drawFilledRoundedRectangle(7,7,413,243,5,240,240,240);
//画一个圆角矩形(x1,y1,x2,y2,圆角半径,R,G,B)
$im->drawRoundedRectangle(5,5,415,245,5,230,230,230);
//画圆角矩形"框"
//第三步 把数据导入画好的图形内
$im->setFontProperties("Fonts/simhei.ttf",8);
//设置字体及大小,需要把字体拷到Fonts文件夹下,或者windos指定到c/system32/fonts
//画一个3维饼图专用函数
//$data,饼图结构数据
//$data数据参数
//$XPos,圆心的X坐标
//$YPos,圆心的Y坐标
//$Radius=100,半径
//$DrawLabels=PIE_NOLABEL,标签样式(百分比和标签)
//$EnhanceColors=false, 边框渲染
//$Skew=50,倾斜角度
//$SpliceHeight=20,饼的厚度
//$SpliceDistance=5,各板块间距离
//$Decimals=2 显示百分比小数位数
$im->drawPieGraph($data->GetData(),$data->GetDataDescription(),180,130,110,PIE_PERCENTAGE_LABEL,false,50,20,5,2);
//饼图的标签列表(从左至右顺序)
//$XPos,标签框左上角的X坐标
//$YPos,标签框左上角的Y坐标
//$data数据参数
//$R,$G,$B 背景颜色
$im->drawPieLegend(330,15,$data->GetData(),$data->GetDataDescription(),250,250,250);
//第四步 制作图表标题和一些样式
$im->setFontProperties("Fonts/simhei.ttf",12);
//写入标题的函数
//$XPos,标签框左上角的X坐标
//$YPos,标签框左上角的Y坐标
//$Value,标题文字内容
//$R,$G,$B,文字颜色
//$XPos2=-1,$YPos2=-1,座标调整的设置
//$Shadow=FALSE 阴影开关
$im->drawTitle(20,30,iconv_arr('阿里集团人员分布'),100,100,100,-1,-1,false);
//第五步 输出保存图形
$im->Render("test.png");//保存为一个图形文件
function iconv_arr($data){
if(is_array($data)){
foreach($data
as $k=>$v){
$data[$k]
= iconv_arr($v);
}
}else{
$data
= mb_convert_encoding($data, "html-entities","gbk" );
}
return
$data;
}
还有几个方法ImportFromCSV从csv文件导入,loadColorPalette从txt文件读取,还是很给力的吧,快自己试试吧。
三 phplot
超字了...
3.3实例介绍
phplot的工作流程也是差不多的,这里就写一个线性图来玩玩吧。具体请看代码,比较简单,写了详细说明的。
<?php
require_once 'phplot.php';
//设置数据
$data = array(
array('2010', 10, 2),
array('2011', 15, 8),
array('2012', 20, 14),
array('2013', 25, 24),
array('2014', 30, 35),
array('2015', 35, 45),
array('2016', 40, 60)
);
$p = new PHPlot(600, 300);
$p->SetDefaultTTFont('Fonts/simhei.ttf');
//设置字体,还是支持中文的吧
$p->SetTitle(iconv_arr('Phpwind疾风学院男女人数比例'));
//设置标题,还是用iconv_arr来解决中文
# Select the data array
representation and store the data:
$p->SetDataType('text-data');
//设置使用的数据类型,在这个里面可以使用多种类型。
$p->SetDataValues($data);
//把一个数组$data赋给类的一个变量$this->data_values.要开始作图之前调用。
$p->SetPlotType('lines');
//选择图表类型为线性.可以是bars,lines,linepoints,area,points,pie等。
$p->SetPlotAreaWorld(0,
0, 7, 100); //设置图表边距
# Select an overall image
background color and another color under the plot:
$p->SetBackgroundColor('#ffffcc');
//设置整个图象的背景颜色。
$p->SetDrawPlotAreaBackground(True);
//设置节点区域的背景
$p->SetPlotBgColor('#ffffff');
//设置使用SetPlotAreaPixels()函数设定的区域的颜色。
$p->SetLineWidth(3); //线条宽度
# Draw lines on all 4
sides of the plot:
$p->SetPlotBorderType('full'); //设置线条类型
# Set a 3 line legend,
and position it in the upper left corner:
$p->SetLegend(iconv_arr(array('男生人数',
'女生人数'))); //显示在一个图列框中的说明
$p->SetLegendWorld(0.3,
95); //设定这个文本框位置
# Generate and output
the graph now:
$p->DrawGraph();
function iconv_arr($data){
if(is_array($data)){
foreach($data
as $k=>$v){
$data[$k]
= iconv_arr($v);
}
}else{
$data
= mb_convert_encoding($data, "html-entities","gbk" );
}
return
$data;
}
这三个是PHP图表类库,对于一些需要交互的图表(比如需要点击某个节点显示大图)还是不能满足需求,只能用highcharts、flot、open-flash-chart这种js和flash图表工具来处理。
- [Swift通天遁地]三、手势与图表-(8)制作股市中常用的蜡烛图表
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 美丽的Java图表类库
摘要 在使用java做后台站点的开发张,图表和报表功能都是不可或缺 的.本文推荐了8款最精彩实用的Java图表应用,大部分图表应用的功能都类似,主要在于界面的美观性和使用的灵活性上有一点高低. 正文 ...
- [Swift通天遁地]三、手势与图表-(6)创建包含三条折线的线性图表
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 8个华丽而实用的Java图表类库
8个华丽而实用的Java图表类库 转 https://www.300168.com/yidong/show-2744.html 核心提示:学习Java的同学注意了!!! 学习过程中遇到什么问题或者 ...
- Android图表类库:WilliamChart
WilliamChart是基于Views的Android图表类库,帮助开发者在Android应用中实现折线图.柱状图和堆叠柱状图.数值发生变化时图表也会以动画的效果发生变化. At the momen ...
- 5个最顶级jQuery图表类库插件-Charting plugin
转载: http://www.cnblogs.com/chu888chu888/archive/2012/12/22/2828962.html 作者:Leonel Hilario翻译:Terry li ...
- 减少可执行程序size的三个常用软件
减少可执行程序size的三个常用软件 linux下面,直接用strip 这个命令 #:strip xxx 可以去掉编译调试信息和各种符号表,能够大大减小可执行程序size windows下面这种exe ...
- java注解学习(1)注解的作用和三个常用java内置注解
今天,记录一下自己学习的关于注解方面的知识. Annotation是从JDK5.0开始引入的新技术 Annotation的作用: -不是程序本身,可以对程序做出解释(这一点和注释没什么区别) -可以被 ...
- JavaScrip——初学(三个常用对话框及方法调用)
一. 三个常用对话框: 1.都必须写在<scrip></scrip> <body> <font>alert("报错")</fo ...
随机推荐
- python闭包和装饰器的理解
闭包: 两个函数的嵌套,外部函数返回内部函数的引⽤,外部函数⼀定有参数 def 外部函数(参数): def 内部函数(): pass return 内部函数 他跟函数之间的区别: 1.格式两个函数嵌套 ...
- POJ2187(凸包+旋转卡壳)
这道题目的大意是给出一组二维空间的顶点,计算其中距离最远的两个顶点之间的距离. 先说明凸包的概念和求法. 定义:对于多边形P,若将P中任意的两个点(包含边上)用一条线段连接,线段都落于该多边形中(含边 ...
- SpringBoot23 分模块开发
1 开发环境说明 JDK:1.8 MAVEN:3.5 IDEA:2017.2.5 SpringBoot:2.0.3.RELEASE 2 创建SpringBoot项目 2.1 项目信息 2.2 添加项目 ...
- 2-javascript::笔记
0.位置: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...
- 解决在Python中使用Win32api报错的问题,No module named win32api
一.系统环境 操作系统: Win7 64位 Python:3.7.0 二.在使用import win32api时,报错:No module named win32api 网上查到有下面解决办法: 方法 ...
- 重置CentOS6.5的登录口令
早先在虚拟机Vmware里安装了一台CentOS6.5,现在想登录,发现无论怎么输入登录口令都不正确,以至于无法登录. 查阅网上资料,可用下面步骤里的方法重置登录口令,在此记录. 1.启动机器,出现下 ...
- Rails 和 Django 的深度技术对比
我想以一个免责声明来开始下面的内容.我使用 Django开发网站已经有三年了,众所周知,我喜欢Django.我已经写了一个开源的应用程序( app),并且我已经将补丁发送到了Django.然而,我以尽 ...
- Ubuntu 复制 拷贝和自适应屏幕
ubuntu 16.04安装vmtools实测无效!!!!!!11 1.解决VMware workstation与主机的粘贴.复制.文件拖拽问题. 2.解决VMware workstations中Ub ...
- xamarin.droid自己的示例工程有些都装不上模拟器,是因为它的architectures选项没设对
也许是版本更迭导致的,有些老工程的architectures不对,如果x86不勾的话,是不能在genymotion的模拟器上跑的.
- 21. Date 函数
SQL 日期 当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配. 只要数据包含的只是日期部分,运行查询就不会出问题.但是,如果涉及时间,情况就有点复杂了. 在讨论 ...