ECharts 万字入门指南
详细学习 Apache ECharts 图表库,掌握丰富的图表类型、强大的交互功能和灵活的配置项,实现数据可视化。

本文将作为你的 ECharts 入门指南,带你系统性地梳理 ECharts 的核心知识体系,并通过一个贴近实际业务的“高三期末考试成绩分析”案例,手把手教你如何将数据转化为富有洞察力的图表。
前端,本质上就是把数据可视化的技术。如何将枯燥的数据,以一种更直观、更易于理解的方式呈现给用户,始终是一个重要的课题。
图表,无疑是这个问题的最佳答案之一。
小到健康 App 中记录一周睡眠变化的柱状图,大到金融应用的实时股票仪表板,图表作为一种强大的视觉语言,其传递信息的效率远超纯粹的文字或表格。它能帮助我们快速发现数据中的模式、趋势和异常点。
在众多选择中,Apache ECharts 无疑是当下最闪耀的产品之一。凭借其丰富的图表类型、强大的交互功能、灵活的配置项以及活跃的社区,成为了全球前端开发者的首选。
然而,和 GSAP 动画库 一样,很多人对 ECharts 的第一印象是“配置项繁多”、“学习曲线陡峭”。但事实果真如此吗?
当我们静下心来,深入探索 ECharts 的世界,会发现其核心概念并不复杂。万变不离其宗,所有的图表配置,都围绕着一些固定的核心模块展开:容器与大小、样式、数据集、坐标轴、视觉映射、图例等等。
ECharts 官网提供了海量的示例,几乎涵盖了你能想到的所有图表效果。甚至,它的配置项文档本身就是可交互的——你可以一边修改配置,一边实时预览效果。这极大地降低了学习门槛。

ECharts 初体验:绘制你的第一个图表
学习任何一门技术的最好方式,就是从一个“Hello World”开始。
引入方式
我们将使用最简单的方式:通过 CDN 引入。你只需要在 HTML 文件中加入一个 <script> 标签即可。这种方式无需构建工具,非常适合快速原型开发和学习。
完整示例
将下面的代码完整复制到一个 HTML 文件中,然后用浏览器打开它,你就能看到你的第一个 ECharts 图表了。
::: details 完整示例
:::

这个简单的例子,已经揭示了 ECharts 的核心工作流程:引入脚本 -> 准备容器 -> 初始化实例 -> 设置配置项。而所有 ECharts 图表的实现,都蕴含在那个巨大的 option 对象中。
核心概念解析:解构 option 对象
ECharts 的 option 对象是一个庞大而复杂的 JavaScript 对象,option 描述了图表的一切:数据、样式、交互、动画等等。理解了它的核心构成,就等于掌握了 ECharts 的精髓。
让我们像剥洋葱一样,一层一层地解析 option 的核心组件。
series:系列与图表类型
series 是 ECharts 中最重要的配置项,没有之一。它是一个数组,数组中的每一个对象都代表一个“系列”。
什么是“系列”?
你可以把它理解为一组相关的数据,以及这组数据如何被可视化的规则。一个图表中可以包含多个系列,每个系列会按照自己的规则(即 type)绘制成图。
比如,在上面的例子中:
type: 'bar'告诉 ECharts,这个系列要绘制成柱状图。data: [...]提供了这组柱状图的具体数值。
如果我想在同一个图表中,再增加一条折线图来表示“产量”,只需要在 series 数组中再增加一个对象即可。
ECharts 支持的图表类型非常丰富,常见的有:
line: 折线图bar: 柱状图pie: 饼图scatter: 散点图radar: 雷达图map: 地图tree: 树图graph: 关系图- ...等等

series 的强大之处在于,它不仅定义了图表的“形”,更承载了图表的“魂”——数据。
xAxis & yAxis:坐标轴
对于绝大多数图表(如折线图、柱状图、散点图),坐标轴是必不可少的。ECharts 通过 xAxis (X 轴) 和 yAxis (Y 轴) 来进行配置。它们通常成对出现,共同定义了一个直角坐标系 (Grid)。
坐标轴主要由轴线、刻度、刻度标签、轴名称等部分组成。
一个常见的 xAxis 配置如下:

坐标轴的 type 是一个关键属性,它决定了坐标轴如何解析数据:
'value': 数值轴。适用于连续数据,会自动根据series.data的最大最小值来生成刻度。'category': 类目轴。适用于离散的类目数据,类目数据需要通过xAxis.data来指定。'time': 时间轴。适用于连续的时序数据,能自动格式化时间标签。'log': 对数轴。适用于数据跨度非常大的情况。
yAxis 的配置与 xAxis 类似。在一个图表中,可以有多个 X 轴和 Y 轴,通过 xAxisIndex 和 yAxisIndex 来关联 series。
grid:绘图网格
grid 组件定义了直角坐标系在图表容器中的位置和大小。当你想调整图表主体部分(不包括标题、图例等)的位置时,就需要配置它。
containLabel: true 是一个非常实用的配置,它会自动计算坐标轴标签的宽度,并调整 grid 的位置,以确保标签能够完整显示。
title:标题
一个图表应该有一个明确的标题。title 组件用于配置主标题和副标题。
tooltip:提示框
当鼠标悬浮到图表的数据项上时,tooltip 组件可以显示详细的数据信息,这是图表交互的重要一环。
trigger 属性决定了提示框的触发方式:
'item': 数据项触发。鼠标悬浮到单个数据项(如柱状图的某个柱子、饼图的某个扇区)时触发。'axis': 坐标轴触发。鼠标悬浮到坐标轴的某个刻度上时,会同时显示该刻度下所有系列的数据。常用于折线图和柱状图。'none': 不触发。
你可以通过 formatter 函数来自定义提示框显示的内容,支持 HTML 字符串和回调函数,给予了极高的灵活度。
legend:图例
当图表包含多个系列时,legend (图例) 组件用于区分不同的系列。
legend 和 series 是通过 name 属性关联的。点击图例项,可以控制对应系列的显示和隐藏,这是 ECharts 内置的交互行为。
dataset:数据集
从 ECharts 4 开始,引入了 dataset 组件,这是一个非常重要的概念,它实现了数据与配置的分离。
在之前的例子中,我们的数据是直接写在 series.data 里的。当数据量较大,或者多个系列需要共用同一份数据时,这种方式就显得很臃肿。
dataset 允许我们统一定义数据源,然后在 series 中通过 encode 来映射数据。
在这个例子中,dataset.source 定义了一个二维数组。ECharts 会默认将第一行/第一列作为维度(dimension)。series 中甚至不需要写 data,ECharts 会自动从 dataset 中取数据。第一列 product 映射到 xAxis,后续的 '2015', '2016', '2017' 三列数据,依次映射到三个 series。
使用 dataset 的好处是:
- 数据复用:一份数据可以被多个系列、多个组件(如
visualMap)使用。 - 数据转换:可以配合
data-transform对数据进行筛选、聚合等预处理。 - 代码清晰:将数据逻辑和样式配置分离开,更易于维护。
强烈推荐在开发中优先使用 dataset 来管理数据。
实战:高三年级期末考试多维分析
理论知识总是枯燥的,让我们通过一个综合案例,将前面学到的知识点串联起来。
背景:假设我们是某高中的数据分析师,拿到了一份高三年级本次期末考试的成绩单。我们需要通过数据可视化的方式,从多个维度对这次考试进行分析,为教学工作提供数据支持。
数据维度:班级、学生姓名、各科成绩(语文、数学、英语、物理、化学、生物)、总分。
场景一:各班级平均总分对比(柱状图)
分析目标:直观对比各个班级的平均总分,了解班级间的整体学习水平差异。

::: details 完整代码
::: 通过这个柱状图,我们可以一目了然地看出哪个班级的平均成绩最高,哪个最低。
场景二:单科成绩分布情况(饼图 & 玫瑰图)
分析目标:以高三(1)班为例,分析数学单科成绩的分布情况(如:优秀、良好、及格、不及格)。

::: details 完整代码
:::
饼图清晰地展示了各个分数段的人数占比。如果将 series.roseType 设置为 'area',它会变成一个南丁格尔玫瑰图,扇区的半径会根据数据大小进行调整,视觉冲击力更强。
场景三:理科综合成绩关联性分析(散点图)
分析目标:探究学生的物理成绩和化学成绩之间是否存在关联性。比如,是不是物理好的学生,化学也普遍不错?

::: details 完整代码
::: 通过观察散点图的分布趋势,我们可以做出初步判断。如果点主要集中在从左下到右上的对角线区域,则说明物理和化学成绩呈正相关关系。我们还可以轻易地发现那些“偏科”的异常点(比如物理很高但化学很低的学生)。
场景四:尖子生各科能力模型(雷达图)
分析目标:选取总分排名前三的学生,用雷达图对比他们的各科能力,分析他们的学科优势与短板。

::: details 完整代码
::: 雷达图能够非常直观地展示出每个学生的学科均衡性。面积越大的学生,综合实力越强;在某个坐标轴上特别突出的,说明该学科是其优势学科。
进阶话题与技巧
掌握了以上内容,你已经可以应对 80% 的常见图表需求了。但 ECharts 的世界远不止于此。
事件与行为
ECharts 实例支持监听鼠标事件。你可以通过 myChart.on('click', ...) 来捕捉用户的点击行为,实现图表下钻、联动等复杂交互。
响应式布局
当浏览器窗口大小变化时,你可能希望图表也能自适应调整。只需要监听 resize 事件,并调用 ECharts 实例的 resize 方法即可。
结合 grid、legend 等组件的百分比布局配置,可以轻松实现完美的响应式图表。
视觉映射 visualMap
visualMap 是一个非常强大的组件,用于将数据的大小映射到视觉元素上,如颜色、大小、透明度等。
例如,在上面的散点图中,我们可以用 visualMap 将学生的总分映射到散点的颜色上,从而在二维关系中引入第三个维度的信息。只需要修改散点图示例的 option 和数据处理函数即可实现。
动画配置
ECharts 内置了流畅的动画效果。你可以在 option 的根级别对动画进行全局配置,也可以在 series 级别进行单独配置,以控制动画的时长、缓动效果等。
总结
行文至此,我们从 ECharts 的安装、第一个“Hello World”案例开始,系统性地剖析了其核心配置项,如 series, xAxis, yAxis, grid, tooltip, legend 和 dataset。更重要的是,我们通过一个贯穿始终的“高三成绩分析”实战项目,将这些知识点融会贯通,应用到了具体的业务场景中,绘制了柱状图、饼图、散点图和雷达图。
希望你现在回过头再看 ECharts,不再觉得它是一堆望而生畏的配置项,而是把它看作一套强大而灵活的“可视化积木”。每一个配置项都是一块积木,只要我们理解了每块积木的作用,就能按照自己的蓝图,搭建出任何想要的图表大厦。
数据可视化的征途是星辰大海。本文只是一个起点,ECharts 还有更多高级的功能(如图形组件、自定义系列、GL 三维图表等)等待你去探索。
(完)