jquery echarts简单例子

 最近做软件工程项目的时候,由于设计图中有柱状图和饼图的设计,第一反应用原生js写肯定很麻烦,于是我请求能否不做,但我们的PM铁了心要做,最终逼迫我找到了这个强大的图表库,哈哈,在这里感谢一下PM李佳玮。(当我发现它还兼容IE6-8时,真的炒鸡感动!)

ECharts提供商业产品常用图表,底层基于ZRender(一个全新的轻量级canvas类库),创建了坐标系,图例,提示,工具箱等基础组件,并在此上构建出折线图、柱状图、散点图、K线图、饼图、雷达图、地图、和弦图、力导向布局图、仪表盘以及漏斗图,同时支持任意维度的堆积和多图表混合展现。

废话不多说,马上进入ECharts的使用吧。

首先我们进入ECharts的官网http://echarts.baidu.com/index.html(向百度前端团队致敬),进去以后下载ECharts。

  下载好的目录:

  初学的话我们只要把目光放在build文件上,这里面包含了我们制作图表所需的相关资源文件。

  引入ECharts包有三种方式,官方文档中有三种方式的具体介绍http://echarts.baidu.com/doc/doc.html#引入ECharts。

  这里我采用官方推荐的模块化单文件引入,首先需要熟悉模块化开发。ECharts是一个符合AMD规范的模块加载器,AMD规范相信大家都不陌生,它是javascript客户端(就是浏览器上)的开发规范,而Node.js有CommonJs开发规范。如果不是很了解AMD规范可以参考一下文章:

AMD---浏览器中的开发规

前面提到,为实现与Node.js相同方式的模块写法,大牛们做了很多努力。

但浏览器环境不同于服务器端,它的模块有一个HTTP请求过程(而Node.js的模块文件就在本地),这个请求过程多数使用script tag,script 默认的异步性导致很难实现与Node.js一模一样的模块格式。

 
Modules/Wrappings 使得实现变为现实。虽然和Node.js的模块写法不完全一致,但也有很多相似之处,使得熟悉Node.js的程序员有一些亲切感。

 
但Node.js终究是服务器端的JavaScript,没有必要把这些条条框框放到浏览器JavaScript环境中。

这时AMD 诞生了,它的全称为异步模块定义。从名称上看便知它是适合script tag的。也可以说AMD是专门为浏览器中JavaScript环境设计的规范。它吸取了CommonJS的一些优点,但又不照搬它的格式。开始AMD作为CommonJS的transport format 存在,因无法与CommonJS开发者达成一致而独立出来。它有自己的wiki 和讨论组 。

AMD设计出一个简洁的写模块API:

define(id?, dependencies?, factory);

 
其中:

id: 模块标识,可以省略。
dependencies: 所依赖的模块,可以省略。
factory: 模块的实现,或者一个JavaScript对象。
id遵循CommonJS Module Identifiers 。dependencies元素的顺序和factory参数一一对应。
 
以下是使用AMD模式开发的简单三层结构(基础库/UI层/应用层):
 
base.js

define(function() {
    return {
        mix: function(source, target) {
        }
    };
});
 

ui.js

define(['base'], function(base) {
    return {
        show: function() {
            // todo with module base
        }
    }
});
 

page.js

define(['data', 'ui'], function(data, ui) {
    // init here
});
 

data.js

define({
    users: [],
    members: []
});
 

以上同时演示了define的三种用法
定义无依赖的模块(base.js)
定义有依赖的模块(ui.js,page.js)
定义数据对象模块(data.js)
 
细心的会发现,还有一种没有出现,即具名模块
 
4,具名模块

define('index', ['data','base'], function(data, base) {
    // todo
});
 

具名模块多数时候是不推荐的,一般由打包工具合并多个模块到一个js文件中时使用。
 
前面提到dependencies元素的顺序和factory一一对应,其实不太严谨。AMD开始为摆脱CommonJS的束缚,开创性的提出了自己的模块风格。但后来又做了妥协,兼容了 CommonJS Modules/Wrappings 。即又可以这样写
 
5,包装模块

define(function(require, exports, module) {
    var base = require('base');
    exports.show = function() {
        // todo with module base
    }
});
 

不考虑多了一层函数外,格式和Node.js是一样的:使用require获取依赖模块,使用exports导出API。
 
除了define外,AMD还保留一个关键字require。require 作为规范保留的全局标识符,可以实现为 module loader,也可以不实现。 

  好,接下来我会展示具体的引入写法:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <div id="main" style="height:300px;"></div>
    <script type="text/javascript" src="echarts/build/dist/echarts.js"></script>
    <script type="text/javascript">
        require.config({
            paths : {
                                // 这里载入相对路径
                echarts : "echarts/build/dist"
            }
        });
        require(
            [
                                // 这里的echarts代表的是paths中的路径
                "echarts",
                "echarts/chart/bar"
            ],<br>              // 回调函数
            function(ex){
            }
        );
 
    </script>
</body>
</html>

 js中require()表示要创建一个图标的请求,首先要列出所需图表库的资源,这里是要载入bar.js文件,因此需要引入模块"echarts/chart/bar"。在ECharts中还有很多种图表,比如pie(饼图),map(地图)等等。

  现在我们已经加载了我们需要的图类,接下来要做的事很简单---插入对应图类所需组件。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <div id="main" style="height:300px;"></div>
    <script type="text/javascript" src="echarts/build/dist/echarts.js"></script>
    <script type="text/javascript">
        require.config({
            paths : {
                echarts : "echarts/build/dist"
            }
        });
        require(
            [
                "echarts",
                "echarts/chart/pie"
            ],
            function(ec){
                var myChart=ec.init(document.getElementById("main"));
                var option = {
                    title :{
                        text : "查看企业各部门报销",
                        x : "center"
                    },
                    tooltip : {
                        trigger : "item",
                        formatter : "{a} <br/> {b} : {c} ({d}%)"
                    },
                    legend : {
                        orient : "vertical",
                        x : "left",
                        data : ["part1","part2","part3","part4"]
                    },
                    toolbox : {
                        show : true,
                        feature : {
                            //mark : {show : true},
                            //dataView : {show : true,readOnly : false},
                            restore : {show : true}
                            //saveAsImage : {shwo :true}
                        }
                    },
                    calculable : false,
                    series : [
                        {
                            name : "饼图实例",
                            type : "pie",
                            radius : "55%",
                            center : ["50%","60%"],
                            data : [
                                {value:100,name:"part1"},
                                {value:200,name:"part2"},
                                {value:300,name:"part3"},
                                {value:400,name:"part4"}
                            ]
                        }
                    ]
                };
                myChart.setOption(option);
            }
        );
    </script>
</body>
</html>
可以看到require()的第二个参数是个function(){},这里应该是个回调函数,等待资源加载好后执行,这个函数中提供了创建图表所需要的信息:

  首先要获取到需要被创建的对象,这里用DOM方法取到。

  其次把数据集用类似json的形式存放到option中,最后传入到要被创建的对象中。

 

  可以看到Option对象中的子对象,都携带了不同的信息,比如标题title,提示框(tooltip)等等,更多的组件信息可以在官方文档中查看

http://echarts.baidu.com/doc/doc.html#选项 

最后打开浏览器就可以欣赏到一个简单的利用ECharts的图表了:

  

当我打开的时候还看到了很多动态的好玩的效果,都值得我们去研究。

不过框架毕竟是框架,希望大家在学习框架前一定要学好原生js~这样用起这些框架起来才会得心应手!

时间: 2024-10-30 12:50:46

jquery echarts简单例子的相关文章

jquery的ajax方式调用json简单例子

  jquery的ajax方式调用json简单例子 前台: <script type="text/javascript" src="jquery-1.5.1.min.js"></script> <script type="text/javascript">         //test  function test(uid)  {    if(confirm("确定该用户操作"+uid+&q

jquery与 ajax 简单例子

jquery与 ajax 简单例子 基于JQuery框架的AJAX PS:本人这篇始发于PHPCHINA,发现被很多人转了,但却未注明出处,想了一下,还是自己转到这里来. 前几天发了个贴,分享了prototype框架关于AJAX方面的学习过程.然后有人说jquery框架更方便. 正好项目中准备使用thickbox,于是干脆抛弃prototype.js,看起jquery.js了.JQuery确实不错,体积比Prototype小了许多,而且使用起来更方便更灵活.有人说Prototype像JAVA,正

一个超简单的jQuery回调函数例子(分享)_jquery

jQuery回调函数简单使用 比如说,我们想要点击某个按钮后触发事件, 先把一些指定内容给隐藏掉, 然后跳出相关信息的对话框. 如果使用普通的方法, 不用回调函数的话, 会有怎么样的效果呢? 效果是先弹出对话框再隐藏内容, 然后再隐藏指定内容. 这显然不是我们想要的效果, 如果使用回调函数,就可以解决这个问题. 当然,回调函数功能远不只这么简单-- 具体的代码如下: <%@ page language="java" import="java.util.*" p

javascript判断非数字的简单例子

这篇文章介绍了javascript判断非数字的简单例子,有需要的朋友可以参考一下   复制代码 代码如下: <html> <head> <title>判断是否为数字及空格</title> <script type="text/javascript" src="jquery.min.js"></script> //这里有无也无所谓 <script type="text/javasc

chrome-ajax简单例子中的错误

问题描述 ajax简单例子中的错误 写了一个非常简单的ajax实例,但在chrome调试时报一下错误: 为什么 .ajax前面的$符号不见了. 这是我的代码: 解决方案 问题解决了,原来是jquery中的$关键字和这里的$冲突了.把$.ajax改成jQuery.ajax就可以了(先引入jquery.js) 解决方案二: 上面少了个}..... 解决方案三: c#.net下简单的Ajax例子$.ajax 的简单小例子AJAX的简单例子 解决方案四: 应该把它写在一个函数里头的 然后直接调用就行了

php99乘法表:php简单例子--打印出99乘法表

php简单例子--打印出99乘法表:<?php//php打印出九九乘法表for ($i=1; $i<10; $i++){for ($j=1; $j<=$i; $j++){echo $j*$i;echo ' ';}echo '<br />';}?> 本文链接http://www.cxybl.com/html/wlbc/Php/20130326/37405.html

web.config文件自定义配置节的使用方法的一个简单例子

web web.config文件自定义配置节的使用方法的一个简单例子用来演示的程序名为MyApp,Namespace也是MyApp 1.编辑web.config文件 添加以下内容,声明一个Section <configSections>    <section name="AppConfig" type="MyApp.AppConfig, MyApp" /> </configSections>   声明了一个叫AppConfig的

SYBAES ASE 12.0 上一个横表转纵表的简单例子

SYBAES ASE 12.0 上一个横表转纵表的简单例子   千千如梦 2002年10月   /* create table ... */create table #dest_table(                         Flag char(1),                         A int null,                         B int null,                         C int null,         

数据库访问简单实现---edainfo-model(三)——简单例子

model|访问|数据|数据库 下面就正式来讲一下开发步骤:首先,在Tomcat5.X下建一个jdbc/edainfo的数据源,数据库可以是oracle.sql server.mysql.表的结构如下:CREATE TABLE example (id varchar(13) NOT NULL ,name varchar(50) NULL ,address varchar(50) NULL ) ON [PRIMARY]其中,id为主键.datasource.xml内容如下:<?xml versio