登录

三个常用的PHP图表类库

php笔记
0 1579
 

$data1y=array(-889353);  //blue那条的数据

$data2y=array(1820161056); //orange那条的数据

 

// Create the graph. These two calls are always required

$graph = new Graph(800500);  //大小 宽*高

$graph->SetScale("textlin"); //设置刻度模式 还有intint、linlin、log、lin、textlog等其他模式

 

$graph->SetShadow(); 

$graph->img->SetMargin(40302040); //设置图表边距,就跟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_SIMSUNFS_BOLD);  //设置标题字体,这里字体默认是FF_FONT1,为了中文换成FF_SIMSUN

$graph->yaxis->title->SetFont(FF_SIMSUNFS_BOLD); //设置X轴标题字体

$graph->xaxis->title->SetFont(FF_SIMSUNFS_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;

}

 

 三个PHP图表类库_休闲

二 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(158321); // 对应数据

$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(400300); //创造一个画布并赋予尺寸

$im->drawFilledRoundedRectangle(774132435240240240); //画一个圆角矩形(x1y1x2y2圆角半径RGB)

$im->drawRoundedRectangle(554152455230230230); //画圆角矩形"框"

 

//第三步 把数据导入画好的图形内

$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()180130110PIE_PERCENTAGE_LABELfalse502052);

 

//饼图的标签列表(从左至右顺序)

//$XPos标签框左上角的X坐标

//$YPos标签框左上角的Y坐标

//$data数据参数

//$R$G$B 背景颜色

$im->drawPieLegend(33015$data->GetData()$data->GetDataDescription()250250250);

 

//第四步 制作图表标题和一些样式

$im->setFontProperties("Fonts/simhei.ttf"12);

//写入标题的函数

//$XPos标签框左上角的X坐标

//$YPos标签框左上角的Y坐标

//$Value标题文字内容

//$R$G$B文字颜色

//$XPos2=-1$YPos2=-1座标调整的设置

//$Shadow=FALSE 阴影开关

$im->drawtitle(2030iconv_arr('阿里集团人员分布')100100100-1-1false);

 

//第五步 输出保存图形

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

}

 

三个PHP图表类库_PHP图表类_02

 

还有几个方法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'); //选择图表类型为线性.可以是barslineslinepointsareapointspie等。

 

$p->SetPlotAreaWorld(0 0 7 100);  //设置图表边距

 

# Select an overall p_w_picpath 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图表类库_jpgraph_03

这三个是PHP图表类库,对于一些需要交互的图表(比如需要点击某个节点显示大图)还是不能满足需求,只能用highcharts、flot、open-flash-chart这种js和flash图表工具来处理。

  



发表评论

0 个回复