codecamp

百度智能小程序 Echarts 图表

ECharts 图表-beta

介绍

ECharts 动态库是智能小程序基于 ECharts 实现的图表动态库,提供了图表在小程序中的使用方法。如果在使用中碰到问题,可以在 Github 提问。

完整的示例程序参见:demo

使用方法

1. 在项目中引用动态库

参考使用动态库中提供的方法,在 app.json 中增添一项 dynamicLib,与 pages 同级。

"dynamicLib": {
    "echartsLib": {
        "provider": "echarts_4_7_0"
    }
},

目前支持的版本:echarts_4_7_0echarts_4_4_0,分别对应 ECharts 4.7.0 及 4.4.0 版本,建议使用较新的 echarts_4_7_0 版本。

2. 在使用到图表组件的页面配置动态库

在每个使用到图表组件的页面,配置 *.json 文件如:

{
    "usingSwanComponents": {
        "chart": "dynamicLib://echartsLib/chart"
    }
}

3. 编写 *.swan 文件

<chart option="{{ option }}" style="width: 100%; height: 500px; display: block"></chart>

这是一种最基本的配置方式。

  • style 也可以在 *.css 中声明,需要保证 <chart> 是有宽度和高度的。
  • option 在 *.js 中绑定到页面的 data 中。
    const option = ...;
    
    Page({
        data: {
            option: option
        }
    });

其中,option 是一个图表配置项,定义了图表的内容和样式。由于本图表组件使用了 ECharts 作为底层实现,所以这个 option 就对应 ECharts 的配置项。一个简单的折线图的配置项可能是这样的——

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};

如果你不知道如何编写配置项,可以在 Echarts 官网或 Echarts 社区找到相似的例子,结合 Echarts 配置项文档模仿修改。

动态库属性列表

<chart> 上支持的属性包括:

属性名称类型说明
optionObject配置项,参见 ECharts 配置项文档
widthnumber、string可显式指定实例宽度,单位为像素。如果传入值为 null/undefined/'auto',则表示自动取实例容器的宽度,参见 echarts.init
heightnumber、string可显式指定实例高度,单位为像素。如果传入值为 null/undefined/'auto',则表示自动取实例容器的高度,参见 echarts.init
dprnumber设备像素比,默认取 swan.getSystemInfoSync().pixelRatio,参见 echarts.init
notMergeboolean在更新配置项的时候,是否不跟之前设置的 option 合并,参见 echartsInstance.setOption
mapsObject、Array<Object>如果是 Object 类型,则是包含 name(地图名称,相当于 echarts.registerMap 接口中的 mapName)与 geoJson(GeoJson 格式的数据)的对象;如果是数组,则每一项都是包含 name 和 geoJson 的数组。具体的使用方法参见「地图」的例子。
actionstring需要触发事件的时候,将这一属性设为 ECharts 支持的属性名称,参见“事件触发与监听”的例子。
toClearboolean设为 true 时,相当于调用 echartsInstance.clear,清空当前实例,会移除实例中所有的组件和图表。
extensionsArray<string>ECharts 扩展名称,目前只支持字符云('wordcloud')与水球图('liquidfill'),注意都是小写。使用方法参见「字符云」和「水球图」的例子。

兼容性说明

以下说明 ECharts 的配置项和 API 与本动态库的差别。

配置项

本动态库支持绝大部分的 ECharts 配置,已知不支持的配置项包括:

  • toolbox.feature.dataView

ECharts API 在动态库中的对应使用方法

ECharts 的 API 通过其他方式提供,开发者不能直接访问到全局变量 echarts 和图表实例。

以下具体说明在 ECharts 的 API 在本动态库中对应的用法。

formatter 的回调函数形式

由于无法向动态库传递 function,因此不能直接使用 ECharts 中回调形式的 formatter(如 option.tooltip.formatter)。所以,从 echarts_4_7_0 版本开始,我们提供了字符串模板以解决这个问题。例子参见「定制 formatter」,字符串模板参数是 ${params},模板语法详见 etpl 模板语法

该方法对于配置项中所有层级的 formatter 有效,对于其他名称的回调函数无效。

全局方法

方法说明
echarts.init开发者无需手动调用此方法,图表会在 DOM 节点 attach 的时候自动初始化图表。如果希望延迟初始化,参见「延迟加载图表」的例子。默认会采用 <chart> DOM 容器的大小作为图表大小,如果需要强制指定大小,可以通过 width 和 height 属性传递,参见「改变图表容器大小」的例子。
echarts.connect不支持图表联动。
echarts.disconnect不支持图表联动。
echarts.dispose开发者无需手动调用此方法,图表会在图表容器 DOM 被移除的时候自动调用这个方法。
echarts.getInstanceByDom开发者无法访问到容器上的实例,需要通过属性的方式对图表进行操作。
echarts.registerMap在动态组件中,通过 maps 属性注册地图,具体方法参见「地图」的例子。
echarts.getMap在动态组件中,如果需要获取此信息,请自行保存相关地图信息。
echarts.registerTheme不支持注册主题,请提供配置项改变样式。
echarts.graphic不支持图形相关帮助方法。

实例方法

方法说明
echartsInstance.group不支持图表联动。
echartsInstance.setOption修改 option 属性就相当于调用该方法,参数 notMerge 可以通过属性 notMerge 设置。
echartsInstance.getWidth在动态组件中,如果需要获取此信息,请自行保存宽度信息。
echartsInstance.getHeight在动态组件中,如果需要获取此信息,请自行保存高度信息。
echartsInstance.getDom不支持 DOM 操作。
echartsInstance.getOption在动态组件中,如果需要获取此信息,请自行保存配置项信息。
echartsInstance.resize通过修改 width 或 height 属性实现该方法的调用,参见「改变图表容器大小」的例子。
echartsInstance.dispatchAction通过修改 action 属性实现该方法的调用,参见「事件触发与监听」的例子。
echartsInstance.on通过 bindxxx 属性(其中 xxx 是 ECharts 事件的名称,注意都是小写)实现该方法的调用,参见「事件触发与监听」的例子。支持绝大部分 ECharts 的事件,不支持的包括:dbclickmousemovemouseovermouseoutglobaloutcontextmenu
echartsInstance.off去除 bindxxx 属性即可。
echartsInstance.convertToPixel不支持。
echartsInstance.convertFromPixel不支持。
echartsInstance.containPixel不支持。
echartsInstance.showLoading不支持。
echartsInstance.hideLoading不支持。
echartsInstance.getDataURL不支持。
echartsInstance.getConnectedDataURL不支持。
echartsInstance.appendData不支持。
echartsInstance.clear通过将 toClear 属性设为 true 实现。
echartsInstance.isDisposed不支持。
echartsInstance.dispose开发者无需手动调用此方法,图表会在图表容器 DOM 被移除的时候自动调用这个方法。


百度智能小程序 topOne图文
百度智能小程序 VR 3D模型-beta
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

百度智能小程序开发文档

百度智能小程序 组件

百度智能小程序 地图

百度智能小程序 画布

百度智能小程序 API

百度智能小程序 界面

百度智能小程序 关注小程序引导组件

百度智能小程序 自定义组件

百度智能小程序 媒体

百度智能小程序 设备

百度智能小程序 拨打电话

百度智能小程序 内存警报

百度智能小程序 手机联系人

百度智能小程序 用户截屏事件

百度智能小程序 第三方平台

百度智能小程序 开放接口

百度智能小程序 百度收银支付

百度智能小程序 分包预下载

百度智能小程序 数据分析

百度智能小程序 服务端

百度智能小程序 云开发

百度智能小程序 初始化

百度智能小程序 云函数

百度智能小程序 服务端初始化

百度智能小程序 服务器获取上下文

百度智能小程序 服务端云函数

百度智能小程序 开发教程

百度智能小程序 功能开发

百度智能小程序 基本原理

百度智能小程序 小程序自动化

百度智能小程序 视频教程

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }