为了兼容小程序 Canvas,Apache ECharts提供了一个小程序的组件,用这种方式可以方便地使用 ECharts。
1、下载
下载的echarts-for-weixin项目目录,这是一个写好的微信小程序项目,可以直接导入到微信小程序编译器中查询所有的图表效果。
其中,ec-canvas 是提供的组件,其他文件是如何使用该组件的示例。
ec-canvas 目录下有一个 echarts.js,默认会在每次 echarts-for-weixin 项目发版的时候替换成最新版的 ECharts。如有必要,可以自行从 ECharts 项目中下载最新发布版,或者从官网自定义构建以减小文件大小。
2、导入
在创建项目之后,可以将下载的 echarts-for-weixin 项目完全替换新建的项目,然后将修改代码;或者仅拷贝 ec-canvas 目录到新建的项目下,然后做相应的调整。
如果采用完全替换的方式,需要将 project.config.json 中的 appid 替换成在公众平台申请的项目 id。pages 目录下的每个文件夹是一个页面,可以根据情况删除不需要的页面,并且在 app.json 中删除对应页面。
如果仅拷贝 ec-canvas 目录,则可以参考 pages/bar 目录下的几个文件的写法。下面,我们具体地说明。
3、创建图表
3.1 引入图表生成js
import * as echarts from '../../ec-canvas/echarts';
3.2 引入自定义echarts组件
{ "usingComponents": { "ec-canvas": "../../ec-canvas/ec-canvas" } }
这一配置的作用是,允许我们在 wxml 中使用 组件。注意路径的相对位置要写对,如果目录结构和本例相同,就应该像上面这样配置。
3.3 创建echarts组件
<view class="container"> <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas> </view>
注意此处的 .container,新建小程序项目后,其中 app.wxss 中默认自动生成的此 class 与本 demo 中的可能不一致,导致图表不能正常显示,只显示空白。请注意参考 app.wxss 修改样式,保证图表的初始化的时候是有宽度和高度的。
其中 ec 是一个我们在 index.js 中定义的对象,它使得图表能够在页面加载后被初始化并设置。
3.4 初始化图表
function initChart(canvas, width, height, dpr) { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr }); canvas.setChart(chart); var option = { ... }; chart.setOption(option); return chart; } Page({ data: { ec: { onInit: initChart } } });
这对于所有 ECharts 图表都是通用的,用户只需要修改上面 option 的内容,即可改变图表。
4、常见问题
如何获取图表实例?
echarts.init 返回的即为图表实例,可以参考 pages/bar/index.js 的写法。
如何延迟加载图表?
参见 pages/lazyLoad 的例子,可以在获取数据后再初始化数据。
如何在一个页面中加载多个图表?
参见 pages/multiCharts 的例子。
如何使用 Tooltip?
目前,本项目已支持 ECharts Tooltip,但是由于 ECharts 相关功能尚未发版,因此需要使用当前本项目中 ec-canvas/echarts.js,这个文件包含了可以在微信中使用 Tooltip 的相关代码。目前在 ECharts 官网下载的 echarts.js 还不能直接替换使用,等 ECharts 正式发版后即可。
具体使用方法和 ECharts 相同,例子参见 pages/line/index.js。
目前一个已知的 bug 是,有些图表的 tooltip 会显示
而非换行符。这一问题将在之后修复,暂时碰到这一问题时,开发者可以通过在 formatter 中使用 \n 作为换行。
如何保存为图片?
参见 pages/saveCanvas 的例子。
文件太大怎么办?
本项目默认提供的 ECharts 文件是最新版本的包含所有组件文件。可以下载不同版本的 ECharts 进行替换。建议调试时使用未压缩版本,发布时使用压缩版本,否则文件会太大无法发布。
发布时,如果对文件大小要求更高,可以在 ECharts 在线定制网页下载仅包含必要组件的包,并且选择压缩。
下载的文件放在 ec-canvas/echarts.js,注意一定需要重命名为 echarts.js。
此外,还可考虑使用微信小程序的分包策略