2016年11月15日 ·  2283次 ·  4条 ·  laravel,package,charts


介绍

在项目开发中,创建图表通常是一件痛苦的事情。因为你必须将数据转换为图表库支持的格式传输到模板中,并且每个图表的插件库是不同的。如果需要替换图表插件的时候,我们就得重新处理数据结构。

为了解决这一问题,一位名叫Erik
Campobadal的开发人员创建了一个新的Laravel图表包来创建交互式图表。它支持十多个最流行的图表库,从标准线图和条形图到实时图表库。都可以让我们在项目中随意使用,轻松切换。

安装

首先在命令终端里定位到项目的根目录,通过运行composer命令进行下载安装:

composer require consoletvs/charts 

下载完成后,在目录config/app.php中添加该扩展包的服务提供者:

'providers' => [
ConsoleTVs\Charts\ChartsServiceProvider::class,
],

以及服务的别名:

'alias' => [
'Charts' => ConsoleTVs\Charts\Charts::class,
],

最后通过artisan发布该扩展包的资源,包括配置文件,模板标签等:

php artisan vendor:publish --tag=charts_config
php artisan vendor:publish --tag=charts_assets --force

命令执行后,在配置目录config/charts.php中包含一个设置数组,你可以在里面找到扩展包的默认设置。

用法示例

控制器代码示例:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use Charts; class TestController extends Controller
{
public function index()
{
$chart = Charts::create('line', 'highcharts')
->setView('custom.line.chart.view') // Use this if you want to use your own template
->setTitle('My nice chart')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);
return view('test', ['chart' => $chart]);
}
}

视图代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <title>My Charts</title> {!! Charts::assets() !!} </head>
<body>
<center>
{!! $chart->render() !!}
</center>
</body>
</html>

单数据图表

使用Charts::create()方法创建图表,该方法接收两个参数。第一个参数是图表类型,第二个是使用的图表库。例如:

Charts::create('line', 'highcharts')
->setTitle('My nice chart')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

附各图表插件库对单数据图表的支持情况:

单图表 线形图 区域图 柱状图 饼状图 环状图 地理图 测量图 温度表 百分比 进度条
chartjs x x x x x - - - - -
highcharts x x x x x x - - - -
google x x x x x x x - - -
material x - x - - - - - - -
chartist x x x x x - - - - -
fusioncharts x x x x x - - - - -
morris x x x - x - - - - -
plottablejs x x x x x - - - - -
minimalist x x x x x - - - - -
canvas-gauges - - - - - - x x - -
justgage - - - - - - x - x -
progressbarjs - - - - - - - - x x

多数据图表

要创建多数据集图表使用Charts::multi()方法,参数和单数据图表相同。在增加数据时,需要使用setDataset()方法添加数据。例如:

Charts::multi('line', 'highcharts')
->setColors(['#ff0000', '#00ff00', '#0000ff'])
->setLabels(['One', 'Two', 'Three'])
->setDataset('Test 1', [1,2,3])
->setDataset('Test 2', [0,6,0])
->setDataset('Test 3', [3,4,1]);

setDataset()方法接收两个参数。第一个为字符串,代表元素标签;第二个参数为数组,代表数值:

Charts::multi('bar', 'minimalist')
->setResponsive(false)
->setDimensions(0, 500)
->setColors(['#ff0000', '#00ff00', '#0000ff'])
->setLabels(['One', 'Two', 'Three'])
->setDataset('Test 1', [1,2,3])
->setDataset('Test 2', [0,6,0])
->setDataset('Test 3', [3,4,1]);

附各图表插件库对多数据图表的支持情况:

多图表 线形图 区域图 柱状图 饼状图 环状图 地理图 测量图 温度表 百分比 进度条
chartjs x x x - - - - - - -
highcharts x x x - - - - - - -
google x x x - - - - - - -
material x - x - - - - - - -
chartist x x x - - - - - - -
fusioncharts x x x - - - - - - -
morris x x x - - - - - - -
plottablejs x x x - - - - - - -
minimalist x x x - - - - - - -
canvas-gauges - - - - - - - - - -
justgage - - - - - - - - - -
progressbarjs - - - - - - - - - -

图表示例

饼状图,highcharts不一定能更改此图表的颜色:

Charts::create('pie', 'highcharts')
->setTitle('My nice chart')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

环状图,highcharts和chartist不一定能更改此图表的颜色:

Charts::create('donut', 'highcharts')
->setTitle('My nice chart')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

线形图:

Charts::create('line', 'highcharts')
->setTitle('My nice chart')
->setElementLabel('My nice label')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

区域图:

Charts::create('area', 'highcharts')
->setTitle('My nice chart')
->setElementLabel('My nice label')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

柱状图,highcharts不一定能更改此图表的颜色:

Charts::create('bar', 'highcharts')
->setTitle('My nice chart')
->setElementLabel('My nice label')
->setLabels(['First', 'Second', 'Third'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

地理位置,标签必须具有国家/地区代码,而不是名称。如果要向图表添加颜色,需要提供至少2种颜色的数组。
第一个是最小值,第二个是最大值:

Charts::create('geo', 'highcharts')
->setTitle('My nice chart')
->setElementLabel('My nice label')
->setLabels(['ES', 'FR', 'RU'])
->setColors(['#C5CAE9', '#283593'])
->setValues([5,10,20])
->setDimensions(1000,500)
->setResponsive(false);

扩展图表库

你可以在存储库中通过创建分支创建自己的图表。src/Templates文件夹包含所有当前图表,但你可以添加如下:

  • 创建一个新文件,语法是:library.type.php
  • 如果你的图表库被调用,mylib和模板属于线形图的扩展,你应该创建一个这样的文件:mylib.line.php
  • 调用使用:$chart =
    Charts::create('line','mylib');
    你需要将CSS/JS添加到/ src文件夹中的includes.php文件。

想获取更多有关Charts扩展包的内容,请访问github地址:https://github.com/ConsoleTVs/Charts

Laravel图表扩展包推荐:Charts的更多相关文章

  1. laravel composer 扩展包开发(超详细)

    laravel composer 扩展包开发(超详细) 置顶 2018年02月05日 11:09:16 Simael__Aex 阅读数:10396    版权声明:转载请注明出处:http://blo ...

  2. 【转】下载量最高的 100 个 Laravel 扩展包推荐

    说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现 ...

  3. Laravel 调试利器 —— Laravel Debugbar 扩展包安装及使用教程

    1.简介 Laravel Debugbar 在 Laravel 5 中集成了 PHP Debug Bar ,用于显示调试及错误信息以方便开发.该扩展包包含了一个 ServiceProvider 用于注 ...

  4. Laravel / PHP 扩展包视频教程

    https://laravel-china.org/courses/laravel-package 每周精选两个以上扩展包进行讲解,涵盖 PHP 和 Laravel 相关的最新.最热.最常用的扩展包. ...

  5. laravel本地化扩展包的下载使用

    1.下载扩展包 composer require caouecs/laravel-lang:~3.0 2.下载完成之后在根目录下的vendor中caouces\src下就是语言的扩展包 2.1我们复制 ...

  6. laravel 实用扩展包

    1.beyondcode / laravel-self-diagnosis 环境检测.检测 php 版本.扩展 是否正常,数据库连接是否正常等 2.nunomaduro/larastan larave ...

  7. laravel后台扩展包

    https://github.com/the-control-group/voyager

  8. 手把手安装Laravel框架(permissions扩展包)实现RBAC权限---以及一些安装时的ERROR

    a.依赖管理工具,框架,环境 1.composer 2.laravel(我的是5.5) 3.PHP(我的7.2),MySql(我的5.7) b,安装 1.首先需要安装一个干净的 Laravel 项目, ...

  9. 基于Composer的Laravel扩展包开发工作流

    使用场景 在引用第三方包的时候,对第三方包有改动需求,需要将代码放在自己的仓库:并且自己的其他项目也有需求引用自定义的第三方包:甚至自己会发布修改后的第三方包: 读完本文你讲获得: Git Submo ...

随机推荐

  1. 内置锁(一)synchronized 介绍与用法

    一.synchronized 的介绍   synchronized 是 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码,而这段代码也被称 ...

  2. selenium+python自动化94-行为事件(ActionChains)源码详解

    ActionChains简介 actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互. 这对于做更复杂的动作非常有用,比如悬停 ...

  3. JS - 函数,Math,number

    函数分为:关键字function 匿名函数 — 没有名字的函数 有名函数 — 有名字的函数 <body> <div></div> <script> // ...

  4. LINUX漏洞-安全防护--防火墙相关

    漏洞扫描 https://blog.csdn.net/e_Inch_Photo/article/details/79072360 基本安全防范: https://blog.csdn.net/holmo ...

  5. NLP—WordNet——词与词之间的最小距离

    WordNet,是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典.它不是光把单词以字母顺序排列,而且按照单词的意义组成一个“单词的网络”.我们这次的 ...

  6. maven项目--Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderListener

    转自:https://yq.aliyun.com/ziliao/597445 Eclipse中tomcat部署工程启动后报错: 二月 25, 2016 2:34:00 下午 org.apache.to ...

  7. 判断TrueType字体

    function IsTrueTypeFont(FontName : string) : boolean;const  PITCH_MASK: byte = $0F;  var  TxMetric: ...

  8. 读取数据库信息并生成表设计文档Word版本

    1.参考C#代码 using Help.DBAccessLayer.Business; using Help.DBAccessLayer.Model.SqlGenerator; using Newto ...

  9. in 和 exist 区别 (转)

    select * from Awhere id in(select id from B) 以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B ...

  10. java并发:读写锁ReadWriteLock

    在没有写操作的时候,两个线程同时读一个资源没有任何问题,允许多个线程同时读取共享资源. 但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写. 简单来说,多个线程同时操作同一资 ...