课程表

Echarts 基础教程

Echarts 案例教程

工具箱
速查手册

Echarts 快速开始

当前位置:免费教程 » JS/JS库/框架 » Echarts

我们在首页的简介里说了,Echarts和jQuery一样,是一个JS库,只要引用了相应的JS文件,就可以配置图表了。如何获得这个库文件呢?有如下几种方法:

1、从 Apache ECharts (incubating) 官网下载界面 获取官方源码包后构建。

2、在 ECharts 的 GitHub 获取。

3、通过 npm 获取 echarts,npm install echarts --save,详见“在 webpack 中使用 echarts”

4、通过 jsDelivr 等 CDN 引入

w3xue给你的建议是:使用官方github下载的成品,或者使用bootcdn 等 CDN 引入。方便快捷!


引入 ECharts

通过标签方式直接引入构建好的 echarts 文件

  1. <!DOCTYPE html><html><head>
  2.     <meta charset="utf-8">
  3.     <!-- 引入 ECharts 文件 -->
  4.     <script src="echarts.min.js"></script></head></html>

绘制一个简单的图表

在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。

  1. <body>
  2.     <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
  3.     <div id="main" style="width: 600px;height:400px;"></div></body>

然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图,下面是完整代码:

  1. <!DOCTYPE html><html><head>
  2.     <meta charset="utf-8">
  3.     <title>ECharts</title>
  4.     <!-- 引入 echarts.js -->
  5.     <script src="echarts.min.js"></script></head><body>
  6.     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  7.     <div id="main" style="width: 600px;height:400px;"></div>
  8.     <script type="text/javascript">
  9.         // 基于准备好的dom,初始化echarts实例
  10.         var myChart = echarts.init(document.getElementById('main'));
  11.  
  12.         // 指定图表的配置项和数据
  13.         var option = {
  14.             title: {
  15.                 text: 'ECharts 入门示例'
  16.             },
  17.             tooltip: {},
  18.             legend: {
  19.                 data:['销量']
  20.             },
  21.             xAxis: {
  22.                 data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  23.             },
  24.             yAxis: {},
  25.             series: [{
  26.                 name: '销量',
  27.                 type: 'bar',
  28.                 data: [5, 20, 36, 10, 10, 20]
  29.             }]
  30.         };
  31.  
  32.         // 使用刚指定的配置项和数据显示图表。
  33.         myChart.setOption(option);
  34.     </script></body></html>

在线运行实例


在 webpack 中使用 ECharts


Webpack 是目前比较流行的模块打包工具,你可以在使用 webpack 的项目中轻松的引入和打包 ECharts,这里假设你已经对 webpack 具有一定的了解并且在自己的项目中使用。

npm 安装 ECharts

你可以使用如下命令通过 npm 安装 ECharts

  1. npm install echarts --save

引入 ECharts

通过 npm 上安装的 ECharts 和 zrender 会放在node_modules目录下。可以直接在项目代码中 require('echarts') 得到 ECharts。

  1. var echarts = require('echarts');// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 绘制图表myChart.setOption({
  2.     title: {
  3.         text: 'ECharts 入门示例'
  4.     },
  5.     tooltip: {},
  6.     xAxis: {
  7.         data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
  8.     },
  9.     yAxis: {},
  10.     series: [{
  11.         name: '销量',
  12.         type: 'bar',
  13.         data: [5, 20, 36, 10, 10, 20]
  14.     }]});

按需引入 ECharts 图表和组件

默认使用 require('echarts') 得到的是已经加载了所有图表和组件的 ECharts 包,因此体积会比较大,如果在项目中对体积要求比较苛刻,也可以只按需引入需要的模块。

例如上面示例代码中只用到了柱状图,提示框和标题组件,因此在引入的时候也只需要引入这些模块,可以有效的将打包后的体积从 400 多 KB 减小到 170 多 KB。

  1. // 引入 ECharts 主模块var echarts = require('echarts/lib/echarts');// 引入柱状图require('echarts/lib/chart/bar');// 引入提示框和标题组件require('echarts/lib/component/tooltip');require('echarts/lib/component/title');// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 绘制图表myChart.setOption({
  2.     title: {
  3.         text: 'ECharts 入门示例'
  4.     },
  5.     tooltip: {},
  6.     xAxis: {
  7.         data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
  8.     },
  9.     yAxis: {},
  10.     series: [{
  11.         name: '销量',
  12.         type: 'bar',
  13.         data: [5, 20, 36, 10, 10, 20]
  14.     }]});

可以按需引入的模块列表见 https://github.com/apache/incubator-echarts/blob/master/index.js

对于流行的模块打包工具 browserify 也是同样的用法,这里就不赘述了。而对于使用 rollup 的自定义构建,参见下面这一节。


自定义构建 ECharts

一般来说,可以直接从 CDN 中获取构建后的 echarts,也可以从 GitHub 中的 echarts/dist 文件夹中获取构建好的 echarts,这都可以直接在浏览器端项目中使用。这些构建好的 echarts 提供了下面这几种定制:

  • 完全版:echarts/dist/echarts.js,体积最大,包含所有的图表和组件,所包含内容参见:echarts/echarts.all.js。

  • 常用版:echarts/dist/echarts.common.js,体积适中,包含常见的图表和组件,所包含内容参见:echarts/echarts.common.js。

  • 精简版:echarts/dist/echarts.simple.js,体积较小,仅包含最常用的图表和组件,所包含内容参见:echarts/echarts.simple.js。

我们也可以自己构建 echarts,能够仅仅包括自己所需要的图表和组件。可以用这几种方式自定义构建:

  • 在线自定义构建:比较方便。

  • 使用 echarts/build/build.js 脚本自定义构建:比在线构建更灵活一点,并且支持多语言。

  • 直接使用构建工具(如 rollup、webpack、browserify)自己构建:也是一种选择。

下面我们举些小例子,介绍后两种方式。

准备工作:创建自己的工程和安装 echarts

使用命令行,创建自己的工程:

  1. mkdir myProject
  2. cd myProject

在 myProject 目录下使用命令行,初始化工程的 npm 环境并安装 echarts(这里前提是您已经安装了 npm):

  1. npm init
  2. npm install echarts --save

通过 npm 安装的 echarts 会出现在 myProject/node_modules 目录下,从而可以直接在项目代码中得到 echarts,例如:

使用 ES Module:

  1. import * as echarts from 'echarts';

使用 CommonJS:

  1. var echarts = require('echarts')

下面仅以使用 ES Module 的方式来举例。

使用 echarts 提供的构建脚本自定义构建

在这个例子中,我们要创建一个饼图,并且想自定义构建一个只含有饼图的 echarts 文件,从而能使 echarts 文件的大小比较小一些。

echarts 已经提供了构建脚本 echarts/build/build.js,基于 Node.js 运行。我们可以在 myProject 目录下使用命令行,看到它的使用方式:

  1. node node_modules/echarts/build/build.js --help

其中我们在这个例子里会用到的参数有:

  • -i:代码入口文件,可以是绝对路径或者基于当前命令行路径的相对路径。

  • -o:生成的 bundle 文件,可以是绝对路径或者基于当前命令行路径的相对路径。

  • --min:是否压缩文件(默认不压缩),并且去多余的打印错误信息的代码,形成生产环境可用的文件。

  • --lang <language shortcut or file path>:是否使用其他语言版本,默认是中文。例如:--lang en 表示使用英文,--lang my/langXX.js 表示构建时使用 <cwd>/my/langXX.js 替代 echarts/lib/lang.js文件。

  • --sourcemap:是否输出 source map,以便于调试。

  • --format:输出的格式,可选 'umb'(默认)、'amd'、'iife'、'cjs'、'es'。

既然我们想自定义构建一个只含有饼图的 echarts 文件,我们需要创建一个入口文件,可以命名为 myProject/echarts.custom.js,文件里会引用所需要的 echarts 模块:

  1. // 引入 echarts 主模块。export * from 'echarts/src/echarts';// 引入饼图。import 'echarts/src/chart/pie';// 在这个场景下,可以引用 `echarts/src` 或者 `echarts/lib` 下的文件(但是不可混用),// 参见下方的解释:“引用 `echarts/lib/**` 还是 `echarts/src/**`”。

然后我们可以在 myProject 目录下使用命令行,这样开始构建:

  1. node node_modules/echarts/build/build.js --min -i echarts.custom.js -o lib/echarts.custom.min.js

这样,myProject/lib/echarts.custom.min.js 就生成了。我们可以创建 myProject/pie.html 来使用它:

  1. <!DOCTYPE html><html><head>
  2.     <meta charset="utf-8">
  3.     <title>myProject</title>
  4.     <!-- 引入 lib/echarts.custom.min.js -->
  5.     <script src="lib/echarts.custom.min.js"></script></head><body>
  6.     <div id="main" style="width: 600px;height:400px;"></div>
  7.     <script>
  8.         // 绘制图表。
  9.         echarts.init(document.getElementById('main')).setOption({
  10.             series: {
  11.                 type: 'pie',
  12.                 data: [
  13.                     {name: 'A', value: 1212},
  14.                     {name: 'B', value: 2323},
  15.                     {name: 'C', value: 1919}
  16.                 ]
  17.             }
  18.         });
  19.     </script></body></html>

然后在浏览器里打开 myProject/pie.html,就可以看到一个饼图:

1.png

允许被引用的模块

在自定义构建中,允许被引用的模块,全声明在 myProject/node_module/echarts/echarts.all.js 和 myProject/node_module/echarts/src/export.js 中。echarts 和 zrender 源代码中的其他模块,都是 echarts 的内部模块,不应该去引用。因为在后续 echarts 版本升级中,内部模块的接口和功能可能变化,甚至模块本身也可能被移除。

引用 echarts/lib/** 还是 echarts/src/**

  • 项目中如果直接引用 echarts 里的一些模块并自行构建,应该使用 echarts/lib/** 路径,而不可使用 echarts/src/**。

  • 当使用构建脚本 echarts/build/build.js 打包 bundle,那么两者可以选其一使用(不可混用),使用 echarts/src/** 可以获得稍微小一些的文件体积。

原因是:目前,echarts/src/** 中是采用 ES Module 的源代码,echarts/lib/** 中是 echarts/src/** 编译成为 CommonJS 后的产物(编译成 CommonJS 是为了向后兼容一些不支持 ES Module 的老版本 NodeJS 和 webpack)。 因为历史上,各个 echarts 扩展、各个用户项目,一直是使用的包路径是 echarts/lib/**,所以这个路径不应该改变,否则,可能导致混合使用 echarts/src/** 和 echarts/lib/** 得到两个不同的 echarts 名空间,造成问题。而使用 echarts/build/build.js 打包 bundle 时没有涉及这个问题,echarts/src/** 中的 ES Module 便于静态分析从而得到稍微小些的文件体积。

直接使用 rollup 自定义构建

上文中介绍了如何使用 echarts 提供的脚本 echarts/build/build.js 自定义构建。与此并列的另一种选择是,我们直接使用构建工具(如 rollup、webpack、browserify)自定义构建,并且把 echarts 代码和项目代码在构建成一体。在一些项目中可能需要这么做。下面我们仅仅介绍如何使用 rollup 来构建。webpack 和 browserify 与此类同,不赘述。

首先我们在 myProject 目录下使用 npm 安装 rollup:

  1. npm install rollup --save-dev
  2. npm install rollup-plugin-node-resolve --save-dev
  3. npm install rollup-plugin-uglify --save-dev

接下来创建项目 JS 文件 myProject/line.js 来绘制图表,内容为:

  1. // 引入 echarts 主模块。import * as echarts from 'echarts/lib/echarts';// 引入折线图。import 'echarts/lib/chart/line';// 引入提示框组件、标题组件、工具箱组件。import 'echarts/lib/component/tooltip';import 'echarts/lib/component/title';import 'echarts/lib/component/toolbox';// 基于准备好的dom,初始化 echarts 实例并绘制图表。echarts.init(document.getElementById('main')).setOption({
  2.     title: {text: 'Line Chart'},
  3.     tooltip: {},
  4.     toolbox: {
  5.         feature: {
  6.             dataView: {},
  7.             saveAsImage: {
  8.                 pixelRatio: 2
  9.             },
  10.             restore: {}
  11.         }
  12.     },
  13.     xAxis: {},
  14.     yAxis: {},
  15.     series: [{
  16.         type: 'line',
  17.         smooth: true,
  18.         data: [[12, 5], [24, 20], [36, 36], [48, 10], [60, 10], [72, 20]]
  19.     }]});

对于不支持 ES Module 的浏览器而言,刚才创建的 myProject/line.js 还不能直接被网页引用并在浏览器中运行,需要进行构建。使用 rollup 构建前,需要创建它的配置文件 myProject/rollup.config.js,内容如下:

  1. // 这个插件用于在 `node_module` 文件夹(即 npm 用于管理模块的文件夹)中寻找模块。比如,代码中有
  2. // `import 'echarts/lib/chart/line';` 时,这个插件能够寻找到
  3. // `node_module/echarts/lib/chart/line.js` 这个模块文件。
  4. import nodeResolve from 'rollup-plugin-node-resolve';
  5. // 用于压缩构建出的代码。
  6. import uglify from 'rollup-plugin-uglify';
  7. // 用于多语言支持(如果不需要可忽略此 plugin)。
  8. // import ecLangPlugin from 'echarts/build/rollup-plugin-ec-lang';
  9.  
  10. export default {
  11.     name: 'myProject',
  12.     // 入口代码文件,就是刚才所创建的文件。
  13.     input: './line.js',
  14.     plugins: [
  15.         nodeResolve(),
  16.         // ecLangPlugin({lang: 'en'}),
  17.         // 消除代码中的 __DEV__ 代码段,从而不在控制台打印错误提示信息。
  18.         uglify()
  19.     ],
  20.     output: {
  21.         // 以 UMD 格式输出,从而能在各种浏览器中加载使用。
  22.         format: 'umd',
  23.         // 输出 source map 便于调试。
  24.         sourcemap: true,
  25.         // 输出文件的路径。
  26.         file: 'lib/line.min.js'
  27.     }
  28. };

然后在 myProject 目录下使用命令行,构建工程代码 myProject/line.js:

  1. ./node_modules/.bin/rollup -c

其中 -c 表示让 rollup 使用我们刚才创建的 myProject/rollup.config.js 文件作为配置文件。

构建生成的 myProject/lib/line.min.js 文件包括了工程代码和 echarts 代码,并且仅仅包括我们所需要的图和组件,并且可以在浏览器中使用。我们可以用一个示例页面来测试一下,创建文件 myProject/line.html,内容如下:

  1. <!DOCTYPE html><html><head>
  2.     <meta charset="utf-8">
  3.     <title>myProject</title></head><body>
  4.     <!-- 为 echarts 准备一个具备大小(宽高)的Dom。 -->
  5.     <div id="main" style="width: 600px;height:400px;"></div>
  6.     <!-- 引入刚才构建好的文件。 -->
  7.     <script src="lib/line.min.js"></script></body></html>

在浏览器里打开 myProject/line.html 则会得到如下效果:

2.png

多语言支持

上面的例子中能看到,工具箱组件(toolbox)的提示文字是中文。本质上,echarts 图表显示出来的文字,都可以通过 option 来定制,改成任意语言。但是如果想“默认就是某种语言”,则需要通过构建来实现。

在上面的例子中,可以在 echarts/build/build.js 的参数中指定语言:

  1. node node_modules/echarts/build/build.js --min -i echarts.custom.js -o lib/echarts.custom.min.js --lang en

表示使用内置的英文。此外还可以是 --lang fi。

  1. node node_modules/echarts/build/build.js --min -i echarts.custom.js -o lib/echarts.custom.min.js --lang my/langXX.js

表示在构建时使用 myProject/my/langXX.js 文件来替换 myProject/node_modules/echarts/lib/lang.js 文件。这样可以在 myProject/my/langXX.js 文件中自定义语言。注意这种方式中,必须指定 -o 或者 --output。

另外,上面的 rollup 插件 echarts/build/rollup-plugin-ec-lang 也可以传入同样的参数,实现同样的功能。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号