Echarts php报表类
<?php /** * Echarts 报表类 * @author 齐福 * 2017年3月3日 上午11:44:30 * api 解释需要结合 2.0 和 3.0 因为2.0有的东西 3.0大部分不会出现例如 title 属性 3.0就没有说明 * 2.0 http://echarts.baidu.com/echarts2/doc/doc.html * 3.0 http://echarts.baidu.com/api.html#echarts * @version 1.0 */ class Echarts { /** * 标题 * @var array("text"=>"报表"); */ var $title = array("text"=>"报表");//报表标题 /** * 显示提示框 * @var array("trigger"=>"axis"); */ var $tooltip = array("trigger"=>"axis"); /** * 报表图例 一个图例对应个 串联 (series) */ var $legend = array(); /** * grid组件 可以有多个 并且有各种控制宽高间距的属性 */ var $grid = array(); var $xAxis = array(); /** * y轴 设置成type value则 随着 series data 变化而变化 */ var $yAxis = array("type"=>"value"); var $series = array(); var $toolbox = array(); function get_option(){ $vars = get_class_vars("Echarts"); $option = array(); foreach ($vars as $k=>$v){ $option[$k] = $this->$k; } return $option; } } class Title{ /** * 显示策略 */ var $show = true; /** * 标题显示文字 */ var $text = ''; /** * 副标题 */ var $subtext = ''; function set_title($v) { foreach ($v as $k=>$v){ $this->$k = $v; } } } class Legend{ var $data = array(); function set_legend($v) { foreach ($v as $k=>$v){ $this->$k = $v; } } } class XAxis{ var $gridIndex = 0; /* 坐标轴类型 'value' 数值轴,适用于连续数据。 'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。 'time' 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。 'log' 对数轴。适用于对数数据。 */ var $type = 'category'; var $data = array(); //x 轴的位置。 默认 grid 中的第一个 x 轴在 grid 的下方('bottom'),第二个 x 轴视第一个 x 轴的位置放在另一侧。 var $position = 'bottom'; var $boundaryGap = false; function set_xAxis($v) { foreach ($v as $k=>$v){ $this->$k = $v; } } } class YAxis{ var $gridIndex = 0; /* 坐标轴类型 'value' 数值轴,适用于连续数据。 'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。 'time' 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。 'log' 对数轴。适用于对数数据。 */ var $type = 'category'; var $data = array(); //y 轴的位置。默认 grid 中的第一个 y 轴在 grid 的左侧('left'),第二个 y 轴视第一个 y 轴的位置放在另一侧。 可选 left right var $position = 'left'; var $boundaryGap = false; function set_yAxis($v) { foreach ($v as $k=>$v){ $this->$k = $v; } } } /** * grid组件 可以有多个 并且有各种控制宽高间距的属性 */ class Grid{ /** * 是否显示直角坐标系网格。 */ var $show=false, $left=60, $top=60, $right='10%', $bottom=60, $width='auto', $height='auto', /** * grid 区域是否包含坐标轴的刻度标签,在无法确定坐标轴标签的宽度,容器又比较小无法预留较多空间的时候,可以设为 true 防止标签溢出容器。 */ $containLabel=FALSE, /** *网格背景色,默认透明。 比如 'rgb(128, 128, 128)' 比如 '#ccc' 注意:此配置项生效的前提 设置了 show: true。 */ $backgroundColor='transparent'; function set_grid($v) { foreach ($v as $k=>$v){ $this->$k = $v; } } } class Series{ var $name = ''; var $type = 'line'; var $stack = ''; var $areaStyle =''; var $data = array(); function set_series($v) { foreach ($v as $k=>$v){ $this->$k = $v; } } } class Toolbox{ var $feature = array(); /** * 水平安放位置 * 可选为:'center' | 'left' | 'right' | {number}(x坐标,单位px) */ var $x = "right"; /** * 垂直安放位置 * 可选为:'top' | 'bottom' | 'center' | {number}(y坐标,单位px) */ var $y = "top"; /** * 工具箱内边距 * 配合 x y 使用 */ var $padding = array(5,100); function __construct(){ $this->feature = new Feature(); } } class Feature{ /** * 辅助线标志 */ var $mark =array("show"=>false); /** * 框选区域缩放 */ var $dataZoom = array("show"=>false); /** * 数据视图 */ var $dataView = array("show"=>false); /** * 动态类型切换 * type ['line', 'bar', 'stack', 'tiled', 'force', 'chord', 'pie', 'funnel'] * line 折线图 * bar 柱状图 * stack 堆积图 * tiled 平铺转换 * force 力导向布局图 * chord 弦图 * pie 饼图 * funnel 漏斗图 */ var $magicType = array("show"=>false); /** * 还原 */ var $restore = array("show"=>false); /** * 保存图片 */ var $saveAsImage = array("show"=>false); } //注 报表必须具备 三个属性 xAxis yAxis 和 series /* $c = new Echarts(); //$v = array("type"=>'1','data'=>array('周一','周二')); //$x =new XAxis($v); //$c->set_xAxis($x); //$c->add_xAxis($v); $xa = new XAxis(); $xa->position = 'top'; $xa->data = array("2010-1-2","2010-1-3"); $c->add_xAxis($xa); //$xax = $c->xAxis; $grid = new Grid(); $c->set_grid($grid); $ya = new YAxis(); $ya->data = array("123","223"); $ya->type = "value"; $c->add_yAxis($ya); $ser = new Series(); $ser->type = 'line'; $ser->data = array("123","223"); $c->set_series($ser); echo print_r(json_encode($c->get_option()),true); */ ?>
例如 title 属性 可以通过 title 类的 set_title 扩展属性
title加链接
$title = new Title();
$title->set_title(array("link"=>"url"));