• Stars
    star
    6,880
  • Rank 5,716 (Top 0.2 %)
  • Language
    JavaScript
  • License
    BSD 3-Clause "New...
  • Created over 6 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于 Apache ECharts 的微信小程序图表库

在微信小程序中使用 Apache ECharts (incubating)

本项目是 Apache ECharts (incubating) 的微信小程序版本,以及使用的示例。

开发者可以通过熟悉的 ECharts 配置方式,快速开发图表,满足各种可视化需求。

体验示例小程序

在微信中扫描下面的二维码即可体验 ECharts Demo:

ECharts Demo

下载

为了兼容小程序 Canvas,我们提供了一个小程序的组件,用这种方式可以方便地使用 ECharts。

首先,下载本项目。

其中,ec-canvas 是我们提供的组件,其他文件是如何使用该组件的示例。

ec-canvas 目录下有一个 echarts.js,默认我们会在每次 echarts-for-weixin 项目发版的时候替换成最新版的 ECharts。如有必要,可以自行从 ECharts 项目中下载最新发布版,或者从官网自定义构建以减小文件大小。

引入组件

微信小程序的项目创建可以参见微信公众平台官方文档

在创建项目之后,可以将下载的 ecomfe/echarts-for-weixin 项目完全替换新建的项目,然后将修改代码;或者仅拷贝 ec-canvas 目录到新建的项目下,然后做相应的调整。

如果采用完全替换的方式,需要将 project.config.json 中的 appid 替换成在公众平台申请的项目 id。pages 目录下的每个文件夹是一个页面,可以根据情况删除不需要的页面,并且在 app.json 中删除对应页面。

如果仅拷贝 ec-canvas 目录,则可以参考 pages/bar 目录下的几个文件的写法。下面,我们具体地说明。

创建图表

首先,在 pages/bar 目录下新建以下几个文件:index.jsindex.jsonindex.wxmlindex.wxss。并且在 app.jsonpages 中增加 'pages/bar/index'

index.json 配置如下:

{
  "usingComponents": {
    "ec-canvas": "../../ec-canvas/ec-canvas"
  }
}

这一配置的作用是,允许我们在 pages/bar/index.wxml 中使用 <ec-canvas> 组件。注意路径的相对位置要写对,如果目录结构和本例相同,就应该像上面这样配置。

index.wxml 中,我们创建了一个 <ec-canvas> 组件,内容如下:

<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 中定义的对象,它使得图表能够在页面加载后被初始化并设置。index.js 的结构如下:

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 的内容,即可改变图表。option 的使用方法参见 ECharts 配置项文档。对于不熟悉 ECharts 的用户,可以参见 5 分钟上手 ECharts 教程。

完整的例子请参见 ecomfe/echarts-for-weixin 项目。

FAQ

如何获取图表实例?

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 会显示 <br/> 而非换行符。这一问题将在之后修复,暂时碰到这一问题时,开发者可以通过在 formatter 中使用 \n 作为换行。

如何保存为图片?

参见 pages/saveCanvas 的例子。

文件太大怎么办?

本项目默认提供的 ECharts 文件是最新版本的包含所有组件文件。可以下载不同版本的 ECharts 进行替换。建议调试时使用未压缩版本,发布时使用压缩版本,否则文件会太大无法发布。

发布时,如果对文件大小要求更高,可以在 ECharts 在线定制网页下载仅包含必要组件的包,并且选择压缩。

下载的文件放在 ec-canvas/echarts.js注意一定需要重命名为 echarts.js

此外,还可考虑使用微信小程序的分包策略

微信版本要求

Canvas 2d 版本要求

最新版的 ECharts 微信小程序支持微信 Canvas 2d,当用户的基础库版本 >= 2.9.0 且没有设置 force-use-old-canvas="true" 的情况下,使用新的 Canvas 2d(默认)。

使用新的 Canvas 2d 可以提升渲染性能,解决非同层渲染问题,强烈建议开启

如果仍需使用旧版 Canvas,使用方法如下:

<ec-canvas id="xxx" canvas-id="xxx" ec="{{ ec }}" force-use-old-canvas="true"></ec-canvas>

最低版本要求

支持微信版本 >= 6.6.3,对应基础库版本 >= 1.9.91。尽可能使用更高版本的基础库版本。

调试的时候,需要在微信开发者工具中,将“详情”下的“调试基础库”设为 1.9.91 及以上版本。

发布前,需要在 https://mp.weixin.qq.com 的“设置”页面,将“基础库最低版本设置”设为 1.9.91。当用户微信版本过低的时候,会提示用户更新。

暂不支持的功能

ECharts 中的绝大部分功能都支持小程序版本,因此这里仅说明不支持的功能,以及存在的问题。

以下功能尚不支持,如果有相关需求请在 issue 中向我们反馈,对于反馈人数多的需求将优先支持:

  • 图片
  • 多个 zlevel 分层

此外,目前还有一些 bug 尚未修复,部分需要小程序团队配合上线支持,但不影响基本的使用。已知的 bug 包括:

  • 安卓平台:transform 的问题(会影响关系图边两端的标记位置、旭日图文字位置等)
  • iOS 平台:半透明略有变深的问题
  • iOS 平台:渐变色出现在定义区域之外的地方

如有其它问题,也欢迎在 issue 中向我们反馈,谢谢!

More Repositories

1

vue-echarts

Vue.js component for Apache ECharts™.
JavaScript
9,615
star
2

zrender

A lightweight graphic library providing 2d draw for Apache ECharts
TypeScript
5,816
star
3

fontmin

Minify font seamlessly
JavaScript
5,545
star
4

spec

This repository contains the specifications.
4,595
star
5

echarts-gl

Extension pack for Apache ECharts, providing globe visualization and 3D plots.
JavaScript
2,554
star
6

echarts-wordcloud

Word Cloud extension based on Apache ECharts and wordcloud2.js
JavaScript
1,592
star
7

echarts-liquidfill

Liquid Fill Chart for Apache ECharts
JavaScript
1,407
star
8

fonteditor

在线字体编辑器
JavaScript
1,297
star
9

awesome-echarts

Awesome list of Apache ECharts
1,269
star
10

veui

Enterprise UI for Vue.js.
JavaScript
1,057
star
11

esl

enterprise standard loader
JavaScript
834
star
12

react-hooks

Collection of react hooks
TypeScript
799
star
13

fontmin-app

fontmin as an OS X, Linux and Windows app
HTML
665
star
14

fecs

Front End Code Style Suite
JavaScript
643
star
15

echarts-stat

Statistics tool for Apache ECharts
HTML
570
star
16

edp

ecomfe develop platform
JavaScript
546
star
17

etpl

ETPL是一个强复用、灵活、高性能的JavaScript模板引擎,适用于浏览器端或Node环境中视图的生成。
JavaScript
496
star
18

okam

Mini program development framework
JavaScript
416
star
19

react-native-cn

407
star
20

est

EFE Styling Toolkit based on Less
Less
398
star
21

saber

移动 Web 解决方案
CSS
358
star
22

esui

enterprise simple ui library
JavaScript
340
star
23

er

enterprise ria framework
JavaScript
301
star
24

knowledge

Front-end knowledge hierarchy
CoffeeScript
236
star
25

reskript

一个帮助开发React应用的全功能命令行套件
TypeScript
210
star
26

rider

Rider 是一个基于 Stylus 与后处理器、无侵入风格的 CSS 样式工具库
CSS
205
star
27

echarts-map-tool

Map Tool for Apache ECharts
JavaScript
130
star
28

js-native

JavaScript
116
star
29

uioc

IoC Framework for us
JavaScript
115
star
30

eslint-config

eslint shareable config for efe
JavaScript
111
star
31

san-cli

A CLI Tooling based on San.js for rapid development.
JavaScript
98
star
32

san-mui

A Set of SAN Components that Implement Google's Material Design
JavaScript
95
star
33

ub-ria

RIA base for union business
JavaScript
94
star
34

react-kiss

A simple and stupid react container solution
JavaScript
85
star
35

react-suspense-boundary

A boundary component working with suspense and error
TypeScript
84
star
36

san-xui

A Set of SAN UI Components that widely used on Baidu Cloud Console
JavaScript
81
star
37

gulp-fontmin

Minify font seamlessly
JavaScript
80
star
38

echarts-optimizer

JavaScript
79
star
39

santd

San UI Toolkit for Ant Design
TypeScript
76
star
40

moye

A Simple UI Library for ZX
JavaScript
74
star
41

ecomfe.github.io

https://efe.baidu.com
JavaScript
72
star
42

react-track

A declarative, component based solution to track page views and user events with react & react-router
TypeScript
71
star
43

echarts-graph-modularity

Graph modularity extension for community detection with Apache ECharts
HTML
70
star
44

tempad-dev

Inspect panel on Figma, for everyone.
Vue
67
star
45

diffy-update

Scripts to update object or array with a diff output
JavaScript
54
star
46

gitdiff-parser

A fast and reliable git diff parser.
HTML
53
star
47

learn-graphql-cn

Learn GraphQL 中文翻译
48
star
48

standard-redux-shape

A library to help standardize your redux state shape
JavaScript
47
star
49

htmlcs

HTML Code Style
JavaScript
46
star
50

saber-showcase

使用 saber 创建的 WebApp 示例
JavaScript
41
star
51

smarty4js

a JavaScript template most like smarty, use smarty module in javascript
JavaScript
34
star
52

rebas

Node framework for Saber, base on Express
JavaScript
34
star
53

baidubce-sdk

Baidu Cloud Engine Node.js SDK
JavaScript
28
star
54

node-csshint

Csshint your css code
JavaScript
27
star
55

amd-analyzer

JavaScript
26
star
56

echarts-bmap

HTML
26
star
57

light-dls

Front-end assets and tooling for Baidu Light DLS.
Less
25
star
58

san-loader

San-Loader 是基于 webpack 的工具,允许开发者书写 San 单文件的方式来进行组件开发。
JavaScript
25
star
59

redux-optimistic-thunk

redux-thunk like dispatching with optimistic UI supported
JavaScript
25
star
60

zrender-doc

Document for zrender
JavaScript
22
star
61

grapher.js

JavaScript 3D Plot Library
JavaScript
21
star
62

redux-managed-thunk

A redux-thunk compatible middleware with managed feature to help write more controllable and reusable thunks
JavaScript
20
star
63

efe

EFE guide
20
star
64

mini-event

A simple and dedicated library to provide event related components
JavaScript
18
star
65

veui-theme-blue

a theme for VEUI
Less
18
star
66

esui-family

Online Demo and document of ESUI Family
JavaScript
18
star
67

dls-icons

Icons for Baidu Light DLS.
JavaScript
17
star
68

echarts-gallery-feedback

Official Feedback Repository for ECharts Gallery
16
star
69

edp-webserver

Package for edp webserver.
JavaScript
16
star
70

san-realworld-app

An exemplary real-world application built with San. This is a good example to discover San for beginners.
JavaScript
16
star
71

san-transition

Append transition effects for elements in san components.
JavaScript
16
star
72

node-lesslint

Less lint
JavaScript
15
star
73

ef

ef is a integration framework with er & esui
JavaScript
14
star
74

echarts-builder-web

ECharts online builder
JavaScript
14
star
75

saber-ajax

适用于移动端、promise 风格的 ajax 封装
JavaScript
13
star
76

san-anode-utils

Util Functions for San ANode
JavaScript
13
star
77

promise

A promise respecting ES standard with plenty of handy extensions
JavaScript
12
star
78

saber-env

移动端浏览器环境检测
JavaScript
12
star
79

echarts-dagre

ECharts graph layout extension using dagre.js
JavaScript
12
star
80

aop

Aspect oriented programming utilities
JavaScript
12
star
81

sublime-etpl

An ETPL syntax definition & snippets specifically for Sublime Text.
Python
12
star
82

bat-ria

RIA extensions for Brand Ads
JavaScript
11
star
83

deep-grasp

A toolkit for adopting LLM into your existing app.
TypeScript
11
star
84

ub-ria-ui

UI components for ub ria applications - standardized & implemented
JavaScript
11
star
85

edp-build

Package for edp build.
JavaScript
10
star
86

webpack-auto-cdn-plugin

Webpack plugin to automatically extract dependencies and reference them via CDN
JavaScript
10
star
87

stylelint-config

Standard stylelint config for efe team
JavaScript
10
star
88

saber-promise

适合移动端的 Promise/A+ 实现
JavaScript
10
star
89

rider-ui

基于 rider 的 UI 样式库,用于快速构建移动应用界面
CSS
9
star
90

saber-router

适用于移动端的路由控制,支持 hash, popstate
JavaScript
9
star
91

saber-scroll

为移动端页面提供区域滚动功能
JavaScript
9
star
92

blog

Blog
CSS
9
star
93

html-nest-rule

JavaScript
8
star
94

veui-docs

Documentation website for VEUI.
JavaScript
8
star
95

saber-matchmedia

移动端 matchMedia 支持
JavaScript
8
star
96

eicons

ecom public web font icons
CSS
8
star
97

query-shape

Standard utilities to manage query requests and responses
JavaScript
8
star
98

esf

EFE Style Framework
CSS
8
star
99

saber-dom

一个适用于移动端、静态函数风格的DOM工具库
JavaScript
7
star
100

svg-mixed-loader

Webpack loader resolving svg into url string and multiple component formats.
JavaScript
7
star