Web数据可视化ECharts 5 · 微课版
以“农村电商”案例贯穿全课程:从认识图表、绘制基础图形,到交互分析、异步加载,最终完成可视化大屏与大数据分析可视化平台——用数据讲好乡村振兴的故事。
课程简介
随着数字经济的发展,数据资源的战略地位日益凸显,市场对数据分析与可视化人才的需求激增。本课程是大数据技术类专业的必修课程,以 ECharts 5 为核心技术工具,围绕农村电商发展趋势、销售趋势、用户行为三条业务主线组织教学,最后通过电商平台运营综合项目和大数据分析可视化平台完成能力进阶。
课程坚持理论与实践一体化:课堂上“任务引入概念”,实验中动手绘图,全部实验围绕真实业务数据展开,学完即可迁移到企业级数据可视化岗位场景。
知识目标
掌握数据可视化基本概念与流程;掌握 ECharts 5 基础架构、常用术语与配置项体系;理解坐标系、组件、事件与主题机制。
能力目标
能熟练绘制柱状图、折线图、饼图、雷达图、词云图等 20 余种图表;能实现图表交互、多图表联动与异步数据加载;能独立完成可视化大屏的设计与制作。
素质目标
培养数据思维与图表审美;具备将数据转化为决策支持的能力;树立用数据服务乡村振兴与数字经济的职业意识。
学时分配概览总计 64 学时(理论 24 + 实验 40)· 另有前置知识单元(HTML/CSS/JS)供零基础同学自学
| 序号 | 项目名称 | 核心知识点 | 理论 | 实验 | 合计 |
|---|---|---|---|---|---|
| 1 | 进入数据可视化世界 | 可视化概念、流程、工具、ECharts 图表认识 | 2 | 2 | 4 |
| 2 | 农村电商发展趋势分析 | 基础架构、坐标系、标题图例、柱状图/面积图/瀑布图/折线图 | 4 | 6 | 10 |
| 3 | 农村电商销售趋势分析 | 工具栏/提示框/标记组件、饼图/圆环图/玫瑰图/散点图/漏斗图 | 4 | 8 | 12 |
| 4 | 农村电商用户行为分析 | 鼠标事件、行为事件、雷达图/矩形树图/词云图/仪表盘 | 4 | 6 | 10 |
| 5 | 农村电商可视化大屏 | 动态主题、多图表联动、异步数据加载、大屏制作 | 6 | 8 | 14 |
| 6 | 综合项目:电商平台运营数据可视化 | 柱状图/堆叠图/柱线混合图/仪表盘/饼图 + 大屏可视化 | 2 | 8 | 10 |
| 7 | 大数据分析可视化平台 | 数据空间、指标配置、图表库、仪表盘、大屏 | 2 | 2 | 4 |
| 总计 | 24 | 40 | 64 | ||
前置课程学习HTML · CSS · JavaScript · JSON —— 数据可视化的“地基”
本课程在浏览器中编写 JavaScript 代码完成可视化,需要具备 Web 前端“三件套”基础。零基础或基础薄弱的同学,请先进入「项目〇:HTML/CSS/JavaScript 前置知识」——包含知识点详解、在线运行案例与课后练习,可对照自学、边学边练。
项目导航点击卡片进入对应项目学习
课程概况
课程基本信息
| 课程名称 | Web数据可视化(ECharts 5)(微课版) | 课程类别 | 必修 |
|---|---|---|---|
| 适用专业 | 大数据技术类等相关专业 | 总学时 | 64 学时(理论 24 + 实验 40) |
| 总学分 | 4.0 学分 | 开课学期 | 2026—2027 学年第一学期 |
| 教材 | 肖静,张良均.Web数据可视化(ECharts 5)(微课版)[M].北京:人民邮电出版社.2025. | ||
课程的性质与任务
课程性质
随着数字经济的发展,数据资源的战略地位日益凸显,成为推动社会经济发展的新引擎。市场对数据分析与可视化人才的需求激增,这些人才不仅要掌握技术工具,更要具备将数据转化为决策支持的能力。为满足企业日益增长的对数据分析与可视化人才的需求,本课程作为大数据技术类专业的必修课开设。
课程任务
通过本课程的学习,学生将掌握使用 ECharts 进行可视化绘图的技能,并深入探讨农村电商的发展趋势、销售趋势以及用户行为三个方面的案例。课程前五个项目紧密结合农村电商实例,将理论应用于实践,随后通过分析电商平台运营数据可视化的综合案例,进一步深化理解,最终延伸至大数据分析可视化平台的应用,为从事数据可视化相关工作打下坚实基础。
教学方法
采用理论与实践相结合的教学方法:理论上通过任务引入概念、原理和方法;实践上充分利用现有硬件资源,指导学生使用 ECharts 进行图表绘制,结合异步数据加载实现可视化大屏的绘制。同时结合农村电商和电商平台运营两个综合案例,引导学生将所学知识与企业需求相结合,要求学生自己动手分析实例,适当组织讨论,充分调动主观能动性。
理论教学安排24 学时
| 序号 | 章节名称 | 主要内容 | 学时 |
|---|---|---|---|
| 1 | 进入数据可视化世界 | 数据可视化的基本概念;数据可视化流程;常用的数据可视化工具;常见的 ECharts 图表;ECharts 与 Web 的关系 | 2 |
| 2 | 农村电商发展趋势分析 | ECharts 官方文档;ECharts 的基础架构;ECharts 的常用术语(图表名、组件名);直角坐标系下的网格和坐标轴;标题和图例组件 | 4 |
| 3 | 农村电商销售趋势分析 | 工具栏组件;提示框组件;标记点组件;标记线组件 | 4 |
| 4 | 农村电商用户行为分析 | 鼠标事件;触发组件的行为事件 | 4 |
| 5 | 农村电商可视化大屏 | 动态切换主题和自定义主题;多图表联动;异步数据加载 | 6 |
| 6 | 综合项目:电商平台运营数据可视化分析 | 分析商品销售情况;分析商品订单情况;大屏可视化 | 2 |
| 7 | 基于 ECharts 的大数据分析可视化平台 | 平台简介;公共空间;数据空间;指标;图表库;仪表盘;大屏 | 2 |
| 学时合计 | 24 | ||
实验教学安排40 学时
| 序号 | 实验项目 | 实验要求(要点) | 学时 |
|---|---|---|---|
| 1 | 开发环境搭建 | 安装开发工具;安装浏览器;获取 ECharts;创建渔业销售数量的 ECharts 项目;创建基础饼图分析渔业销售数量占比情况 | 2 |
| 2 | 农村电商发展趋势分析 | 绘制网格与坐标轴;添加标题、图例组件;绘制基础柱状图分析全国快递业务量;堆叠面积图分析主要农产品生产总量;瀑布图分析电商平台数量;基础折线图分析农村电商零售额;堆叠柱状图分析多品类零售额占比 | 6 |
| 3 | 农村电商销售趋势分析 | 添加工具栏、提示框、标记点、标记线组件;绘制阶梯图分析活跃商家数量;饼图分析商品市场占比;圆环图分析订单来源占比;玫瑰图分析快递包裹数量;柱线组合图分析订单数量与销售额;散点图分析竞争对手市场份额;漏斗图分析各销售环节转化率 | 8 |
| 4 | 农村电商用户行为分析 | 添加鼠标事件;添加触发组件的行为事件;雷达图分析不同地区用户购买喜好;矩形树图分析用户分布;折线面积图分析不同年龄段用户活跃度;嵌套饼图分析用户偏向的农产品;词云图分析用户评论;基础仪表盘分析用户满意度 | 6 |
| 5 | 农村电商可视化大屏 | 实现动态切换主题;实现自定义主题;实现多图表联动;实现异步数据加载;制作可视化大屏分析农村电商发展趋势、销售趋势与用户行为 | 8 |
| 6 | 综合项目:电商平台运营数据可视化分析 | 柱状图分析不同品类商品销售数量;堆叠图分析不同渠道不同品类销售数量;柱线混合图分析不同时间段销售总金额与数量;仪表盘分析本周商品销售完成率;饼图/环形饼图分析订单与物流情况;大屏可视化 | 8 |
| 7 | 基于 ECharts 的大数据分析可视化平台 | 数据空间配置;设置指标;配置图表库;设计仪表盘;查看大屏 | 2 |
| 学时合计 | 40 | ||
考核方式平时成绩 30%(作业 + 考勤)· 期末大作业 70%(提交作品)
平时成绩
作业 + 考勤:平时作业(各项目课后习题、实验任务成果)与课堂出勤情况,综合评定计入总评。
期末大作业
提交作品形式:围绕农村电商主题(或自选主题),独立完成一个基于 ECharts 的数据可视化作品(含可视化大屏 / 分析图表 + 设计说明),以「作品 + 答辩」方式评定。
教材与参考资料
- 教材:肖静,张良均.Web数据可视化(ECharts 5)(微课版)[M].北京:人民邮电出版社.2025.
- 参考资料:
- [1] 张治斌,张良均.Python数据分析与应用(第3版)(微课版)[M].北京:人民邮电出版社.2025.
- [2] 范路桥,张良均.Web数据可视化(ECharts版)[M].北京:人民邮电出版社.2021.
- 在线资源:ECharts 官方文档 · 官方图表示例 · 主题编辑器
HTML/CSS/JavaScript 前置知识
项目概述
项目描述
《Web数据可视化(ECharts 5)》的一切代码都运行在浏览器中:HTML 负责搭建页面结构(为图表准备 div 容器),CSS 负责样式与布局(让页面和大屏美观),JavaScript 负责逻辑与数据(配置图表、处理数据、响应用户操作)。本项目系统梳理这三门前置技术,让你带着扎实的基础进入项目一,后续学习事半功倍。
学习目标
- 掌握 HTML 文档结构与常用标签,能独立搭建包含图表容器的网页
- 掌握 CSS 选择器、盒模型与 Flex 布局,能为页面和图表容器设置样式
- 掌握 JavaScript 变量、函数、数组与对象,能加工处理图表所需数据
- 掌握 DOM 操作与事件监听,能实现页面交互(点击、悬停等)
- 理解 JSON 数据格式,能解析数据并渲染到页面
- 了解 异步加载(Promise / fetch),为项目五的异步数据加载打基础
理论要点六大知识模块
知识点详解点击标题展开/收起 · 与 ECharts 学习直接挂钩
一、HTML 基础:网页的骨架
HTML(HyperText Markup Language,超文本标记语言)用标签描述网页内容的结构。浏览器读取 HTML 文档,将其渲染为一个可视化的页面。
1. 文档基本结构
2. 常用标签一览
| 标签 | 作用 | 在 ECharts 学习中的用途 |
|---|---|---|
| <div> | 块级容器,默认占满整行,可设置宽高 | 图表容器:id 唯一,init() 时传入 |
| <span> | 行内容器,不换行 | 页面内的小范围文字修饰 |
| <h1>~<h6> | 标题,数字越小级别越高 | 页面与大屏的标题文字 |
| <p> | 段落文本 | 说明性文字 |
| <ul> <li> | 无序列表 | 知识点、步骤列表 |
| <table> | 表格:<tr> 行、<th> 表头、<td> 单元格 | 数据预览表、明细表 |
| <script> | 引入或书写 JavaScript | 引入 echarts.js、书写图表配置 |
3. 两个重要属性
id:给元素一个唯一标识(同一页面不能重复),JS 通过 document.getElementById('id') 精准找到它;class:给元素分组(可重复),配合 CSS 批量设置样式。
4. 块级元素与行内元素
5. 链接、图片与表单控件
二、CSS 基础:网页的样式
CSS(Cascading Style Sheets,层叠样式表)描述 HTML 元素的呈现方式:颜色、大小、间距、布局。CSS 通过选择器找到元素并施加样式。
1. 三种基本选择器
2. 盒模型
每个元素都是一个“盒子”,从内到外依次是:内容 content → 内边距 padding → 边框 border → 外边距 margin。理解盒模型,才能精确控制页面布局与图表容器尺寸。
3. Flex 布局:最常用的现代布局
给容器设置 display:flex 后,其子元素会自动沿主轴排列,配合 justify-content(主轴对齐)、align-items(交叉轴对齐)、gap(间距)即可快速完成常见布局——可视化大屏的多图表排列正是它的典型应用。
4. 常用文字与颜色属性
5. display:元素的三种形态
| display 值 | 效果 | 典型元素 |
|---|---|---|
| block | 块级:独占一行、可设宽高 | div、p、h1~h6 |
| inline | 行内:不换行、宽高由内容决定 | span、a、b、i |
| inline-block | 既同行排列、又可设宽高 | img、button |
| flex | 弹性布局:子元素自动排列、可换行 | 大屏容器、卡片容器 |
三、JavaScript 语法:网页的逻辑
JavaScript 是浏览器内置的编程语言,ECharts 本身就是用 JavaScript 编写的,所有图表配置也都由 JavaScript 对象表达。
1. 变量声明:var / let / const
| 关键字 | 特点 | 推荐用法 |
|---|---|---|
| var | 老式声明,作用域较宽(函数级),有“变量提升” | 老代码中常见,新代码尽量避免 |
| let | 块级作用域,值可重新赋值 | 需要修改值的变量(如循环计数) |
| const | 块级作用域,声明后不可重新赋值 | 图表实例、配置对象(默认选择) |
2. 数据类型
数字 number、字符串 string、布尔 boolean、空 null、未定义 undefined、对象 object、数组 array。判断类型用 typeof,例如 typeof 3 结果为 "number"。
3. 函数:两种写法
4. 数组与对象:图表数据的“原料”
ECharts 的 series.data 几乎都是数组,数组元素常常是对象。掌握下面四个数组方法,就能灵活加工数据:
| 方法 | 作用 | 示例 |
|---|---|---|
| push() | 向末尾追加元素 | arr.push(100) |
| map() | 遍历并返回新数组(一对一变换) | data.map(d => d.value) 取出每个对象的值 |
| filter() | 遍历并过滤出满足条件的元素 | data.filter(d => d.value > 500) |
| reduce() | 累加计算,返回一个值 | data.reduce((a,b) => a + b.value, 0) 求和 |
5. 流程控制:if 判断与 for 循环
6. 对象:图表数据的基本单元
7. 模板字符串(ES6)
四、DOM 操作与事件:让页面“动”起来
DOM(Document Object Model,文档对象模型)把网页结构组织成一棵“节点树”。JS 通过 DOM API 找到节点、修改节点,页面就会实时变化。
1. 获取元素
2. 修改内容与样式
3. 事件监听
4. 动态创建与删除元素
5. 事件对象 e:拿到“谁触发了事件”
chart.on('click', ...) 响应图表点击,chart.on('mouseover', ...) 响应悬停。事件机制正是项目四的重点内容。五、JSON 与数据处理:图表的数据之源
JSON(JavaScript Object Notation,对象表示法)是一种轻量级数据交换格式,由键值对和数组嵌套组成。服务器返回的数据、本地数据文件,大多都是 JSON。
1. JSON 的基本形态
2. 两个关键方法
3. JSON 与 ECharts 的无缝对接
教材中的图表数据常以 .json 文件存放,加载后只需一行 map 即可取出类目与数值:
4. 嵌套 JSON:对象套数组、数组套对象
5. 数据加工三连:取字段、筛选、排序
六、异步与网络请求:数据的搬运工
浏览器向服务器请求数据需要“网络往返”,不能立即拿到结果。JavaScript 采用异步机制:先去做别的事,等数据返回后再执行后续代码。
1. 同步 vs 异步
| 类型 | 行为 | 示例 |
|---|---|---|
| 同步 | 一行执行完才执行下一行,阻塞页面 | 普通的加减乘除、数组遍历 |
| 异步 | 发起请求后立即返回,结果就绪后通过回调处理 | 加载图片、请求接口、定时器 |
2. Promise 与 fetch
3. 加载中的用户体验
请求期间页面应给出“加载中”反馈。ECharts 内置了 chart.showLoading() 与 chart.hideLoading(),在异步加载前后调用,体验更完整。
4. async / await:更优雅的异步写法
$.get()(jQuery)或 fetch()(原生)从 JSON 文件读取数据并渲染大屏;项目六将全面使用 fetch。本节先建立概念即可。实验任务六个递进任务 · 建议 8 学时
新建 index.html,按标准结构书写:DOCTYPE、html、head(含 charset 与 title)、body。在 body 中放置一个 h1 标题和一个带 id 的 div 容器,设置宽高,浏览器打开验证显示。
为页面添加样式:页面背景、标题颜色与居中;用 display:flex 排列三个卡片(内容自定),设置 gap 间距与 hover 变色效果。
在 script 中定义一组城市订单量数组,用 map 计算“×2 后”的数组,用 filter 筛出大于 500 的值,用 reduce 求和,把结果分别输出到控制台(console.log)。
页面放一个标题元素和一个按钮,点击按钮后:修改标题文字、切换标题颜色(两种颜色来回切换)。再放一个“显示/隐藏”按钮控制一段说明文字的显隐。
定义一份商品销售数据的 JSON 数组(名称、销量),用 forEach 或 map 动态生成 table 行,把数据渲染成表格,并计算并显示总销量。
把任务 1–5 整合:HTML 骨架 + CSS 美化 + JS 处理一份 JSON 数据并渲染为卡片列表,页面上留一个“预留图表区域”(宽高固定的空 div)。完成即可进入项目一。
代码示例可直接在线运行与查看源码
课后习题
- A. <div>
- B. <span>
- C. <p>
- D. <h1>
- A. 类选择器以 # 开头
- B. 类选择器以英文句点(.)开头
- C. id 选择器以英文句点(.)开头
- D. 标签选择器以 # 开头
- A. var
- B. let
- C. const
- D. static
- A. JSON.stringify()
- B. JSON.parse()
- C. Object.toString()
- D. Array.from()
- A. console.log()
- B. document.write()
- C. alert()
- D. fetch()
操作题
制作“我的课程信息页”
用 HTML + CSS + JavaScript 完成一个课程信息页面:包含课程名称(标题)、课程简介(段落)、知识点列表(ul 列表);用 CSS 完成背景、居中与卡片美化;放置一个按钮,点击后切换简介文字的颜色(两种颜色交替)。
实训题
数据驱动的小型信息展示页
自选主题(如“家乡特产”“校园社团”“班级图书角”),定义一份 JSON 数组数据(不少于 5 条,每条含名称与数值),用 JavaScript 将数据渲染为卡片列表,并计算合计值显示在页面底部;同时预留一个宽高固定的空 div 并标注“图表预留区”。
进入数据可视化世界
项目概述
项目描述
某渔业销售公司希望直观了解各类水产品的销售构成,以便优化进货结构。本项目以此为切入点,带领大家认识什么是数据可视化、可视化工作的完整流程,并搭建 ECharts 开发环境,绘制出第一个图表——渔业销售数量占比饼图。
学习目标
- 掌握数据可视化的基本概念及其在数据分析中的作用(识别模式、分析关系、检测异常)
- 掌握数据可视化流程的五个步骤:需求分析 → 数据获取 → 数据预处理 → 数据分析与可视化 → 分析报告
- 了解常用的数据可视化工具(ECharts、Python、D3、FineBI、Power BI)及选择依据
- 认识常见的 ECharts 图表类型及其适用场景
- 了解ECharts 与 Web 的关系,理解图表在网页中的渲染原理
理论要点五大知识模块
知识点详解结合课件展开 · 点击标题展开/收起
一、什么是数据可视化
数据可视化是一种综合技术,通过图形和图像直观展现数据间的量级关系,涉及计算机视觉、计算机辅助设计、计算机图形学等多个领域。其本质在于研究多维度视角下的数据图像表现形式,旨在表示数据、处理数据以及进行决策分析。
数据为可视化提供了价值,可视化则为数据赋予了意义,二者互为补充。数据可视化在数据分析中的三大典型作用:
1. 识别模式
辅助识别数据中的重复性模式,例如趋势、季节性变化、周期性波动等。如股票价格走势图展示日常模式,时间序列折线图揭示季节性规律;直方图可显示数据的分布形状,帮助了解中心趋势和离散程度。
2. 分析关系
利用散点图、线图、热力图和散布矩阵等,直观理解变量间的相关性或关联,发现数据中隐藏的因果关系和趋势。网络图可展示复杂系统中不同元素间的连接和关系,常用于社交网络分析、交通路线规划等。
3. 检测异常
通过分布图、箱线图或直方图等,识别出与正常模式明显不同的数据点(离群点),有助于及时发现潜在问题,例如欺诈交易识别、设备故障检测等。
二、数据可视化流程
数据可视化流程是一个系统化的步骤,从需求分析到分析报告,每一步都至关重要:
| 阶段 | 核心任务 | 要点 |
|---|---|---|
| ① 需求分析 | 流程的起始步骤。通过充分的沟通与讨论,理解用户的需求和目标,明确分析目的、关键指标和问题,并与需求方达成一致。 | 重点:充分沟通;成果指导后续所有环节 |
| ② 数据获取 | 依据需求分析结果收集原始数据。途径分直接获取(一手数据:业务记录、调查结果、实验数据)与间接获取(二手数据:权威机构提供)。形式包括 Excel、CSV、Web 数据、数据库数据等。 | 考虑数据的完整性、准确性和可用性 |
| ③ 数据预处理 | 数据清洗、转换和整理:数据合并(整合多张关联表格)、数据清洗(剔除重复、缺失、异常、不一致数据)、数据标准化(消除量纲差异)、数据变换(离散化、哑变量处理等)。 | 各步骤相互交织,无固定顺序,需灵活处理 |
| ④ 数据分析与可视化 | 流程的核心。将抽象信息转化为具体图形。可视化方法包括对比分析、结构分析、相关性分析、统计分析等;图表类型取决于分析目的和数据类型。 | 图表选择 = 分析目的 + 数据类型 |
| ⑤ 分析报告 | 对分析和可视化结果的总结和解释,提取关键见解,回答需求分析阶段确定的问题,为业务改进、产品设计、市场策略提供结论和建议。 | 传达数据的含义和价值,辅助决策 |
案例:农村电商“销售数据分析”五步走
三、常见的数据可视化工具
| 工具 | 特点 | 适用场景 |
|---|---|---|
| ECharts | 百度开源的基于 JavaScript 的可视化库。通过数据集管理数据,支持过滤、聚类、回归;二十多种图表 + 十几种组件;Canvas/SVG 双渲染引擎;遵循可视化原则的默认设计、响应式布局;社区活跃、第三方插件丰富。 | Web 网页图表、可视化大屏(本课程主角) |
| Python | 高级编程语言,语法简洁、可读性强、跨平台;庞大的标准库和第三方库覆盖多个领域;科学计算生态完善。 | 数据分析 + matplotlib 等绑定的可视化 |
| D3 | 免费开源的 JavaScript 低级工具箱,不包含统一“图表”概念,高度灵活;数据绑定机制连接数据集与 DOM 元素,实现动态可视化。 | 高度定制化的 Web 可视化开发 |
| FineBI | 帆软开发的商业智能工具,支持连接多种数据源,提供数据切片、透视、过滤等分析与计算功能,具备数据安全和权限控制机制。 | 企业级 BI 报表与自助分析 |
| Power BI | 微软推出的商业智能工具,提供交互式仪表板,可集中查看本地与云端信息,支持将可视化效果嵌入网站共享。 | 企业合并实时视图与决策看板 |
选择依据:根据工具特点与实际需求选择——Web 端交互图表首选 ECharts;数据处理深度分析用 Python;高度定制用 D3;企业级报表用 FineBI / Power BI。
四、常见的 ECharts 图表
常见图表具有两个核心价值:一是直观呈现复杂数据;二是帮助决策者快速理解信息,辅助高效决策。图表类型由系列(series)中的 type 属性决定:
| series.type | 图表族 | 典型图表与适用场景 |
|---|---|---|
| bar | 柱状图族 | 柱状图(柱高表示数值大小,简洁明了)、条形图(维度多且名称长)、堆叠柱状图(比较类别间相对大小)、瀑布图(绝对值与相对值结合,展示数量变化) |
| line | 折线图族 | 折线图(变化趋势)、平滑曲线图、堆叠面积图(部分与整体关系)、堆叠折线图、阶梯图(突出阶段性突变) |
| pie | 饼图族 | 饼图(类目占比)、环形图(空间受限时更高效)、嵌套饼图(逐层展示分级关系)、南丁格尔玫瑰图(强调数据相对大小) |
| scatter | 散点图族 | 散点图(观察分布趋势)、多系列散点图(多组数据关系)、气泡图(气泡大小和颜色表示第三维度) |
| 其他 | 专项图表 | 漏斗图(流程转化与流失)、雷达图(多变量数据)、矩形树图(层级数据)、词云图(文本关键词频率)、仪表盘(关键指标与进度) |
图表选择小练习:问题 → 该选哪种图?
| 要回答的问题 | 推荐图表 | 为什么 |
|---|---|---|
| 五种水产品的销量谁多谁少? | 柱状图 bar | 类目之间比大小 |
| 快递业务量近几年怎么变化? | 折线图 line | 看时间趋势走向 |
| 各支付方式占多少份额? | 饼图 pie | 看占比结构 |
| 销售额和利润有没有关系? | 散点图 scatter | 看两个变量的关系 |
| 浏览→下单→支付 转化率如何? | 漏斗图 funnel | 看流程各环节转化 |
五、ECharts 与 Web 的关系
ECharts 是一款基于 JavaScript 的开源可视化库,通过 HTML 页面中的 <script> 标签引入,与 Web 前端技术紧密相连。
Web(World Wide Web,万维网)是由众多通过超文本传输协议(HTTP)相互链接的文档和资源组成的全球性信息系统。在 Web 网页中,开发者使用 JavaScript 创建和配置图表,图表被渲染在 HTML 元素中(通常是 <div> 标签内);利用 JavaScript 操作 DOM,可动态修改图表的配置和数据,实现用户交互时图表的实时更新和响应。
ECharts 还可与 React、Vue、Angular 等前端框架无缝集成,嵌入现代 Web 应用。在数据驱动的 Web 应用时代,ECharts 增强了数据表达力,为用户提供直观、互动的数据分析界面。
实验任务开发环境搭建 · 2 学时
安装 Visual Studio Code(推荐)或 HBuilder 等代码编辑器,安装中文语言包与 Live Server 插件,熟悉新建文件、保存、打开文件夹等基本操作。
安装 Chrome 或 Edge 浏览器,按 F12 打开开发者工具,认识 Console(控制台)面板——调试 JavaScript 代码与查看报错信息的主要场所。
方式一:从官网下载 echarts.js 到本地(推荐教学使用);方式二:使用 CDN 引入;方式三:npm 安装。本地引入不依赖网络,运行更稳定。
新建项目文件夹 EchartsTest,建立目录结构:根目录放置 Welcome.html,js 子目录存放 echarts.js,用 Live Server 打开验证环境可用。
按“引入 ECharts → 准备 DOM 容器 → init 初始化 → setOption 渲染”四步法,绘制渔业销售数量占比饼图(参考下方代码示例),保存并截图提交。
代码示例3 个在线图表:饼图看占比 · 柱状比大小 · 折线看趋势
课后习题
- A. 提高数据存储容量
- B. 识别数据中的重复性模式
- C. 增强网络安全性
- D. 加快数据传输速度
- A. 数据存储
- B. 数据获取
- C. 数据分析与可视化
- D. 网络安全性检查
- A. 仅支持基本的图表类型
- B. 需要付费使用
- C. 拥有健康且活跃的开源社区
- D. 只能在特定的操作系统上运行
- A. 柱状图
- B. 折线图
- C. 饼图
- D. 散点图
- A. 柱状图
- B. 漏斗图
- C. 雷达图
- D. 矩形树图
操作题
绘制全国淡水养殖面积占比饼图
使用 ECharts 绘制基础饼图,展示全国淡水养殖面积占比情况。
要求:新建 HTML 文件,本地引入 echarts.js,主标题“全国淡水养殖面积占比情况”居中显示,扇区标签显示名称与数值。
实训题
农村电商数据可视化方案设计
选择一个你熟悉的农村电商数据场景(如家乡特产网络销量、村级快递网点业务量、直播间观众构成等),按数据可视化流程完整走一遍:写出需求分析(要回答什么问题)、数据来源与获取方式、预处理要点、拟采用的图表类型及理由,最后输出一页图文并茂的分析报告(图表可用手绘草图)。
农村电商发展趋势分析
项目概述
项目描述
近年来农村电商蓬勃发展,快递业务量、农村网络零售额持续攀升。本项目围绕“农村电商发展趋势”主题,系统学习 ECharts 的基础架构与常用术语,掌握直角坐标系下网格、坐标轴、标题、图例四大基础组件,并用柱状图、堆叠面积图、瀑布图、折线图呈现农村电商的发展趋势。
学习目标
- 认识 ECharts 官方文档(使用手册、API、配置项手册)
- 了解 ECharts 的基础架构(ZRender、组件模块、图类模块、接口模块)
- 熟悉 ECharts 常用术语:常用图表名与组件名及其英文写法
- 掌握直角坐标系下网格组件和坐标轴组件的使用方法
- 掌握标题组件和图例组件的使用方法
- 掌握柱状图、堆叠面积图、瀑布图、折线图的绘制,并能从图形中提炼结论
理论要点
知识点详解结合课件展开 · 点击标题展开/收起
一、ECharts 官方文档
ECharts 官方文档是一份全面且详尽的指南,系统性地介绍了 ECharts 的“特性”“使用手册”“API”以及“配置项手册”,涵盖从基础教程到高级定制的所有内容,还包含“版本记录”与“常见问题”。
| 板块 | 内容与使用建议 |
|---|---|
| 使用手册 | 全面的入门指南,含“入门篇”:ECharts 的获取、引入和创建第一个图表的基本步骤,是初学者快速上手的首选。 |
| API | 左右分栏布局:左边导航区 + 右边信息主显示区。单击导航链接显示详细内容,导航区搜索框支持模糊查询。用于查询 echarts.init、setOption、on 等方法。 |
| 配置项手册 | 同样是左右分栏布局与模糊搜索,用于查询 option 中每一个配置项(series、title、grid 等)的参数、数据类型与默认值。 |
在线地址:echarts.apache.org。遇到任何配置项问题,“先查配置项手册”是最快的解决路径。
二、ECharts 的基础架构
在 ECharts 的架构体系中,基于轻量级的 Canvas 类库 ZRender,以及组件、图类和接口这三个核心模块,共同构建了一个高效且灵活的数据可视化框架。
| 核心模块 | 职责 |
|---|---|
| 组件模块 | 专注于增强图表的交互性和个性化功能:标题、图例、提示框、工具栏、坐标轴等。 |
| 图类模块 | 提供多样化的图表类型(柱状图、折线图、饼图等),满足各种数据展示需求。 |
| 接口模块 | 对外提供 init、setOption、on、dispatchAction 等编程接口,是开发者与图表交互的桥梁。 |
三、ECharts 的常用术语(图表名)
图表开发的核心任务在于配置项属性的设定,其中最关键的是系列(series)中的图表类型属性(type)。记住图表对应的英文术语是编写配置项的基础:
| 图表名 | 说明 | 图表名 | 说明 |
|---|---|---|---|
| line | 折线图,展示数据随时间推移的趋势或变化 | boxplot | 盒须图,展示数据分布的统计概览 |
| bar | 柱状图,直观比较不同类别的数据大小 | heatmap | 热力图,用颜色强度展示二维分布 |
| pie | 饼图,对比数据在总和中所占百分比 | graph | 关系图,展示数据点之间的连接关系 |
| scatter | 散点图,展示两个变量之间的关系 | lines | 路径图,展示数据流动或路径 |
| map | 地理坐标/地图,展示数据在地理空间上的分布 | tree | 树图,展示树形结构各节点的层级关系 |
| candlestick | K 线图,展示股票、期货等价格走势 | treemap | 矩形树图,展示树形数据结构 |
| radar | 雷达图,表现多变量的数据 | sunburst | 旭日图,展示层次结构的占比关系 |
| parallel | 平行坐标系,展示多维数据 | sankey | 桑基图,展示数据流的分布与转移 |
| funnel | 漏斗图,展示各阶段的转化率和流失 | gauge | 仪表盘,展现关键指标数据 |
| pictorialBar | 象形柱图,用形象化图形展示数据 | themeRiver | 主题河流图,展示多时间序列趋势 |
四、ECharts 的常用术语(组件名)
组件是构成图表的基本元素,它决定图表的外观布局和支撑图表与用户之间的交互行为。组件类型丰富、分工明确,开发者通过组合和配置组件,实现高度自定义、灵活互动的图表效果。
| 名词 | 说明 | 名词 | 说明 |
|---|---|---|---|
| title | 标题组件,含主/副标题 | tooltip | 提示框组件,鼠标悬停显示详情 |
| legend | 图例组件,展示系列标记、颜色和名字 | axisPointer | 坐标轴指示器组件 |
| grid | 直角坐标系内绘图网格组件 | toolbox | 工具栏组件,提供数据分析工具 |
| xAxis | 直角坐标系 grid 中的 X 轴组件 | brush | 区域选择组件,局部缩放对比 |
| yAxis | 直角坐标系 grid 中的 Y 轴组件 | geo | 地理坐标系组件,用于地图绘制 |
| polar | 极坐标系组件(含角度轴和径向轴) | parallel / parallelAxis | 平行坐标系及其坐标轴组件 |
| radiusAxis | 极坐标系的径向轴组件 | singleAxis | 单轴组件 |
| angleAxis | 极坐标系的角度轴组件 | timeline | 时间线组件,动态展示序列数据 |
| radar | 雷达图坐标系组件,只适用于雷达图 | graphic | 原生图形元素组件,自定义图形 |
| dataZoom | 数据区域缩放组件 | calendar | 日历坐标系组件 |
| visualMap | 视觉映射组件,数据值映射到视觉元素 | dataset | 数据集组件,单独的数据集声明 |
五、直角坐标系下的网格组件(grid)
网格组件是直角坐标系下用于定义绘图区域的关键组件。它控制图表中坐标轴和系列图形的显示区域,通过设置边距、大小和背景等属性,精确布置图表的布局结构,也是实现多图表并排或叠加显示的基础。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| grid.id | 字符串类型 | 组件 ID,默认不指定,指定后可用于在 option 或 API 中引用组件 |
| grid.show | 布尔类型 | 是否显示直角坐标系网格,默认值为 false |
| grid.zlevel / grid.z | 数值类型 | 控制图形层级,z 值小的图形会被 z 值大的图形覆盖 |
| grid.left / right | 字符串 / 数值 | 组件离容器左端 / 右端的距离 |
| grid.top / bottom | 字符串 / 数值 | 组件离容器顶部 / 底部的距离 |
| grid.width / height | 字符串 / 数值 | 组件的宽度 / 高度 |
支持配置多个 grid(数组形式)实现复杂图表布局;containLabel 可将刻度标签纳入网格计算,避免标签溢出容器。
六、直角坐标系下的坐标轴组件(xAxis / yAxis)
坐标轴是数据展示的基准线,决定了数据如何映射到图表空间。ECharts 提供灵活的坐标轴配置,支持不同类型的轴,允许设置坐标轴的位置、范围、刻度密度、标签样式以及轴线的显示方式等,便于精细化调整。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| xAxis.id / show | 字符串 / 布尔 | 组件 ID;是否显示 X 轴,默认值为 true |
| xAxis.gridIndex | 数值类型 | X 轴所在的 grid 的索引(多网格布局时使用) |
| xAxis.type | 字符串类型 | 坐标轴类型:value(数值)、category(类目)、time(时间)、log(对数) |
| xAxis.data | 数组类型 | 类目轴的类目数据(type 为 category 时使用) |
| xAxis.name | 字符串类型 | 坐标轴名称 |
| xAxis.nameLocation | 字符串类型 | 坐标轴名称显示位置(start / middle / end) |
| xAxis.nameTextStyle | 对象类型 | 坐标轴名称的文字样式 |
| xAxis.position | 字符串类型 | X 轴的位置(top / bottom),Y 轴为 left / right |
| xAxis.offset | 数值类型 | 相对于默认位置的偏移(双 X 轴等场景) |
| xAxis.axisTick | 对象类型 | 坐标轴刻度相关设置(inside、alignWithLabel 等) |
| xAxis.axisLine | 对象类型 | 坐标轴轴线相关设置(show、lineStyle 等) |
| xAxis.axisLabel | 对象类型 | 坐标轴刻度标签的样式(rotate、formatter 等) |
七、标题组件(title)
标题组件用于展示图表的主标题与副标题,ECharts 支持配置多个标题(数组形式)便于复杂排版。可灵活设置位置、样式、对齐方式,使图表层次清晰。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| title.show / id | 布尔 / 字符串 | 是否显示标题组件;组件 ID |
| title.text | 字符串类型 | 主标题文本,支持使用 \n 换行 |
| title.link / target | 字符串类型 | 主标题文本超链接;指定窗口打开链接 |
| title.textStyle | 对象类型 | 主标题文本样式(颜色、字号、字重等) |
| title.subtext | 字符串类型 | 副标题文本,支持 \n 换行 |
| title.sublink / subtarget | 字符串类型 | 副标题超链接及打开方式 |
| title.subtextStyle | 对象类型 | 副标题文本样式 |
| title.left / top | 字符串 / 数值 | 标题组件离容器左端 / 顶部的距离 |
| title.textAlign | 字符串类型 | 整体的水平对齐(auto / left / center / right) |
| title.textVerticalAlign | 字符串类型 | 整体的垂直对齐 |
| title.padding / itemGap | 数值 / 数组 | 标题内边距;主副标题之间的间距 |
八、图例组件(legend)
图例组件用于展示图表中各系列的标识信息(标记、颜色和名称),帮助用户识别数据系列。图例具备交互功能,点击可控制系列的显示和隐藏;当图例项较多时可启用 scroll 滚动模式(横向或纵向)。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| legend.type | 字符串类型 | 图例的类型:plain(普通)/ scroll(滚动) |
| legend.show / id | 布尔 / 字符串 | 是否显示图例组件;组件 ID |
| legend.left / right | 字符串 / 数值 | 图例组件离容器左端 / 右端的距离 |
| legend.top / bottom | 字符串 / 数值 | 图例组件离容器顶部 / 底部的距离 |
| legend.width / height | 字符串 / 数值 | 图例组件的宽度 / 高度 |
| legend.orient | 字符串类型 | 图例列表的布局朝向:horizontal(水平)/ vertical(垂直) |
| legend.data | 数组类型 | 图例的数据数组,与系列 name 对应 |
实验任务6 学时 · 由组件到图表逐步进阶
新建 HTML 页面,配置 grid 组件的 left、top、right、bottom、width、height 属性,观察绘图区域位置与大小的变化,理解 containLabel 的作用。
配置 xAxis(type: 'category',类目数据)与 yAxis(type: 'value',轴名称),设置刻度对齐、轴线显示等样式,建立规范的直角坐标系。
为主图表添加主标题与副标题,设置位置(left / top)、对齐方式与文字样式,体会标题对图表主题表达的支撑作用。
为多系列图表添加图例,练习 orient 布局朝向与位置设置,点击图例项验证系列的显示与隐藏交互。
以 2018—2022 年全国快递业务量数据绘制柱状图,体会柱形高度对数值大小的直观表达。
507.1、2019 年 635.2、2020 年 833.6、2021 年 1083.0、2022 年 1105.8。数据来源:《中国电子商务报告(2022)》。以粮食、蔬菜、水果、水产品四个系列绘制堆叠面积图(series 中 stack 属性设为相同值),分析总量与结构的变化。
用“透明辅助系列 + 数值系列”的堆叠技巧绘制瀑布图,展示各年度平台数量的增减变化。
绘制折线图展示农村网络零售额逐年增长趋势,练习 smooth 平滑曲线与 areaStyle 面积填充。
将多品类零售额堆叠展示,比较各品类在总量中的占比结构,完成后撰写一份数据结论。
代码示例4 个在线可运行图表 · 点击“查看源码”学习配置
课后习题
- A. 特性
- B. 使用手册
- C. API
- D. 配置项手册
- A. 组件模块、图类模块和数据模块
- B. 组件模块、图类模块和接口模块
- C. 组件模块、接口模块和渲染模块
- D. 图类模块、接口模块和交互模块
- A. radar
- B. funnel
- C. themeRiver
- D. gauge
- A. xAxis.name
- B. xAxis.nameLocation
- C. xAxis.textStyle
- D. xAxis.nameTextStyle
- A. legend.orient
- B. legend.left
- C. legend.top
- D. legend.type
操作题
绘制 9 月和 10 月部分蔬菜价格对比图
某农贸市场记录了 12 种蔬菜两个月的价格,请绘制柱状图进行对比。
实训题
农村电商发展趋势可视化小报告
综合运用本项目的网格、坐标轴、标题、图例组件,在一个页面中完成两张图表:① 全国快递业务量柱状图;② 农村网络零售额折线图。为每张图表撰写 3~5 句数据分析结论(趋势描述、拐点识别、原因推测),并将页面与结论一并提交。
农村电商销售趋势分析
项目概述
项目描述
销售趋势是农村电商运营的核心关注点。本项目在趋势分析的基础上,为图表添加工具栏、提示框、标记点、标记线四大交互增强组件,并学习饼图、圆环图、南丁格尔玫瑰图、散点图、漏斗图等占比与转化类图表,全面呈现“哪些商品好卖、订单从哪里来、转化到哪一步流失”等销售洞察。
学习目标
- 掌握工具栏组件(toolbox)的使用方法:保存图片、数据视图、数据区域缩放、动态类型切换等
- 掌握提示框组件(tooltip)的使用方法:触发方式、显示格式、样式定制
- 掌握标记点组件(markPoint)的使用方法:突出最大值、最小值与自定义标记
- 掌握标记线组件(markLine)的使用方法:平均值线、自定义标线
- 掌握饼图、圆环图、玫瑰图、散点图、漏斗图的绘制与适用场景
理论要点
知识点详解结合课件展开 · 点击标题展开/收起
一、工具栏组件(toolbox)
工具栏组件用于提供对图表的交互操作功能,是增强图表用户体验的重要元素。开发者可灵活设置各种工具按钮、工具栏的位置、显示与隐藏等。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| toolbox.show / id | 布尔 / 字符串 | 是否显示工具栏组件;组件 ID |
| toolbox.orient | 字符串类型 | 工具栏 icon 的布局朝向(horizontal / vertical) |
| toolbox.itemSize / itemGap | 数值类型 | 工具栏 icon 的大小;每项之间的间隔 |
| toolbox.showTitle | 布尔类型 | 是否在鼠标悬停时显示 icon 标题 |
| toolbox.feature | 对象类型 | 各工具配置项。可选属性:saveAsImage(导出图片)、restore(还原)、dataView(数据视图)、dataZoom(数据区域缩放)、magicType(动态类型切换)、brush(刷选);除内置工具外还可自定义工具按钮 |
| toolbox.iconStyle | 对象类型 | 公用的 icon 样式设置 |
| toolbox.left / top / right / bottom | 字符串 / 数值 | 工具栏组件离容器各侧的距离 |
| toolbox.width / height | 字符串 / 数值 | 工具栏组件的宽度 / 高度 |
| toolbox.tooltip | 对象类型 | 工具箱的 tooltip 配置 |
二、提示框组件(tooltip)
提示框组件用于提供图表数据的详细信息展示功能。可设置在全局(tooltip)、坐标系中(grid.tooltip 等)、系列中(series.tooltip)以及系列的每个数据项中(series.data.tooltip)。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| tooltip.show | 布尔类型 | 是否显示提示框组件 |
| tooltip.trigger | 字符串类型 | 触发类型:item(数据项图形触发,适用于饼图/散点图)、axis(坐标轴触发,适用于柱状图/折线图等类目轴图表) |
| tooltip.axisPointer | 对象类型 | 坐标轴指示器配置项 |
| tooltip.showContent | 布尔类型 | 是否显示提示框浮层,默认显示。只需触发事件或显示 axisPointer 而不需要显示内容时可配置为 false |
| tooltip.alwaysShowContent | 布尔类型 | 是否永远显示提示框内容 |
| tooltip.triggerOn | 字符串类型 | 提示框触发的条件(mousemove / click 等) |
| tooltip.showDelay / hideDelay | 数值类型 | 浮层显示 / 隐藏的延迟 |
| tooltip.enterable | 布尔类型 | 鼠标是否可进入提示框浮层中 |
| tooltip.renderMode | 字符串类型 | 浮层的渲染模式,默认为 html |
| tooltip.confine | 布尔类型 | 是否将提示框限制在图表区域内,默认为 false |
| tooltip.formatter | 字符串 / 函数 | 提示框浮层内容格式器,支持字符串模板与回调函数 |
| tooltip.backgroundColor 等 | — | 背景颜色、边框颜色 / 宽度、文字样式等外观配置 |
三、标记点组件(markPoint)
标记点组件用于突出展示数据关键信息与异常值,配置在系列(series)内部。标记点位置有三种指定方式:① 使用 type: 'max' / 'min' / 'average' 内置标记;② 使用 coord 指定数据点坐标;③ 直接指定 x / y 像素位置。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| series.markPoint.symbol | 字符串类型 | 标记的图形,默认值为 pin(气泡) |
| series.markPoint.symbolSize | 数值 / 数组 | 标记的大小;数组表示 [宽, 高] |
| series.markPoint.symbolRotate / offset | 数值 / 数组 | 标记的旋转角度 / 偏移 |
| series.markPoint.data | 数组类型 | 标记点数据,可含 type: 'max' / 'min'、coord 坐标、name 等字段 |
| series.markPoint.itemStyle / label | 对象类型 | 标记点样式与文本标签配置 |
| series.markPoint.animation | 布尔 / 对象 | 标记点及其动画配置 |
四、标记线组件(markLine)
标记线组件用于绘制参考线,同样配置在系列内部,常用于标注平均值、目标值、阈值等。
| 参数 | 数据类型 | 说明 |
|---|---|---|
| series.markLine.silent | 布尔类型 | 标线是否静默交互(不响应鼠标事件),默认为 false |
| series.markLine.symbol / symbolSize | 字符串 / 数值 | 标线两端的标记图形及大小。注意 symbolSize 不能像一般 symbolSize 那样通过数组分别指定高宽 |
| series.markLine.precision | 数值类型 | 标线数值的精度,在显示平均值线的时候有用 |
| series.markLine.data | 数组类型 | 标线数据,如 { type: 'average' }、{ xAxis / yAxis: 值 }、起点终点坐标 |
| series.markLine.lineStyle / label | 对象类型 | 标线样式(颜色、线型)与文本标签 |
| series.markLine.animationDuration | 数值 / 函数 | 标线动画时长,支持回调函数 |
五、饼图与圆环图
饼图主要用于展示不同类目数据在总和中的占比,每个扇区的弧度表示数据数量的比例。圆环图通过将 radius 设置为数组(如 ['40%', '65%'])实现,能够更有效地利用空间并突出各部分的比例关系,适用于需要清晰展示多个数据类别且空间有限的情况。
| 参数 | 说明 |
|---|---|
| series.type: 'pie' | 饼图系列类型,数据格式为 [{ value, name }] |
| series.radius | 饼图半径:数值 / 百分比字符串为实心饼图;数组 [内半径, 外半径] 为圆环图 |
| series.center | 圆心位置,默认 ['50%', '50%'](容器宽高的一半) |
| series.roseType | 是否展示为南丁格尔玫瑰图:'radius'(半径映射数值)/ 'area'(面积映射数值) |
| series.label | 扇区标签:position(inside / outside)、formatter(如 '{b}: {d}%') |
| series.startAngle / minAngle | 起始角度;最小扇区角度(防止过小扇区看不见) |
六、南丁格尔玫瑰图
南丁格尔玫瑰图将数值映射到扇区半径(roseType: \'radius\'),能够更有效地传达数据的层次和重要性。在数据差异较大的情况下,玫瑰图比普通饼图更能突出对比效果,适用于需要强调数据相对大小的场景,如各省份快递包裹数量对比。
七、散点图与气泡图
散点图由多个“点”组成,直观观察数据的变化趋势与分布特征。数据格式为二维数组 [[x1, y1], [x2, y2], …];气泡图是特殊的散点图,通过 symbolSize 把第三个维度映射到气泡大小(配合 visualMap 还可映射颜色),从而在二维平面上展示三个变量的关系。
多系列散点图可在同一坐标系中绘制不同系列的点集,展示多组数据之间的关系和分布特征,适用于揭示数据集群、趋势以及不同变量间的相关性。
八、漏斗图
漏斗图通过连续阶段构成类似漏斗的形状,清晰展示数据在各个阶段的变化和转化情况,适用于业务流程比较规范、周期长、环节多的流程分析。
| 参数 | 说明 |
|---|---|
| series.type: 'funnel' | 漏斗图系列类型,数据按 value 从大到小排列展示 |
| series.sort | 数据排序方式:descending(漏斗型,默认)/ ascending(金字塔型)/ 'none'(按数据顺序)。金字塔型与漏斗型的区别就在于数据项的排序方式 |
| series.gap | 数据图形之间的间距 |
| series.min / max | 数据映射的宽度上下限(默认 0% / 100%) |
| series.label.position | 标签位置:inside(内部)/ left / right / insideLeft 等 |
多个漏斗图共存:需在系列配置中定义多个对象(多组 series),实现左右对照的漏斗对比。
实验任务8 学时 · 组件增强 + 五类图表
为销售前十的水果同比增长率折线图配置 toolbox:saveAsImage(导出图片)、dataView(数据视图)、dataZoom(数据区域缩放)、restore(还原),并设置工具栏位置。
为图表配置 tooltip,对比 trigger: 'item' 与 'axis' 两种触发方式的差异,练习 formatter 自定义提示内容。
用 markPoint 标出同比增长率的最大值(榴莲)与最小值(杨梅),并尝试用 coord 添加自定义标记点。
用 markLine 绘制平均值线,设置线型为虚线并调整 precision 精度。
将 series.step 设为 'middle'(或 start / end)绘制阶梯图,突出商家数量的阶段性变化。
以生鲜、粮油、服饰、家居、数码等品类销售额绘制基础饼图,标签显示“名称 + 占比”。
将 radius 设为数组绘制圆环图,分析直播带货、平台商城、社区团购等订单来源结构。
以主要省份快递包裹业务量绘制玫瑰图(roseType: 'radius'),突出省份间的差异。
在同一图表中用柱状图表示订单数量、折线图表示销售额(双 Y 轴),分析两者随时间的变化关系。
以销售额为 X 轴、市场份额为 Y 轴绘制散点图,并用 symbolSize 映射气泡大小。
以“浏览商品 → 加入购物车 → 提交订单 → 完成支付 → 分享评价”绘制漏斗图,定位流失环节。
代码示例5 组在线可运行图表
课后习题
- A. 用于设置工具栏的显示和隐藏
- B. 是对象类型、各工具配置项,除了内置工具按钮外还可以自定义工具按钮
- C. 只能使用内置的工具按钮
- D. 直接决定工具栏组件的大小
- A. trigger 设置为 axis 主要适用于饼图
- B. tooltip.showContent 表示是否显示提示框浮层,默认显示
- C. renderMode 默认为 json
- D. confine 设置为 false 是为了将 tooltip 限制在图表区域内
- A. symbol 的默认值是 arrow
- B. symbolSize 的数组表示 [高, 宽]
- C. 标注的位置可通过 coord 指定坐标等方式设定
- D. symbolSize 默认值为 100
- A. 标线是否静默交互,默认为 true
- B. 标点大小,可像一般 symbolSize 那样通过数组分别指定高宽
- C. 标线数值的精度,在显示平均值线的时候有用
- D. 动画时长,不支持回调函数
- A. 漏斗图通过设置 type 属性为 pyramid 来绘制
- B. 多个漏斗图共存时只需在系列配置中定义一个对象
- C. 设置 sort 属性为 descending 实现的是金字塔型
- D. 金字塔型与漏斗型的区别在于数据项的排序方式,通过设置 sort 属性为 ascending 实现金字塔型
操作题
为水果同比增长率图表添加完整交互组件
基于“销售前十的水果同比增长率”折线图,为图表添加四大交互组件并截图对比效果。
实训题
农村电商销售转化全链路分析
某农村电商平台记录了完整销售链路数据:浏览商品 10000 人次 → 加入购物车 4200 → 提交订单 2600 → 完成支付 2150 → 分享评价 980。请完成:① 用漏斗图展示各环节转化情况,标注每环节转化率;② 计算整体转化率并定位流失最严重的环节,提出至少两条优化建议;③ 用圆环图展示订单来源(直播带货 34.5%、平台商城 28.2%、社区团购 18.6%、微信社群 12.4%、其他 6.3%)。
农村电商用户行为分析
项目概述
项目描述
用户行为数据是电商平台的“指南针”。本项目围绕“用户在买什么、怎么买、满意不满意”三个问题,先学习鼠标事件与行为事件两类交互机制——让图表“听懂”用户操作、主动控制图表状态;再掌握雷达图、矩形树图、带时间轴的折线图、嵌套饼图、词云图、仪表盘六类图表,从购买喜好、地域分布、活跃度、品类偏好、评论情感、满意度六个维度完成用户行为分析。
学习目标
- 掌握鼠标事件的类型与触发机制(click、dblclick、mouseover、mouseout、mousemove、contextmenu 等)
- 掌握通过
on()绑定事件监听,利用 params 事件对象实现交互反馈 - 掌握行为事件(action.highlight、action.downplay、action.select 等)及
dispatchAction()触发方式 - 掌握雷达图、矩形树图、词云图、仪表盘的绘制方法与适用场景
- 掌握嵌套饼图的层级表达与数据区域缩放组件(dataZoom)的使用
- 了解鼠标事件与行为事件的异同,能组合二者实现循环高亮等复杂交互
理论要点
知识点详解结合课件展开 · 点击标题展开/收起
一、鼠标事件
鼠标事件通过提供单击、双击以及鼠标移入移出等交互方式触发的一系列事件,使用户能够与图表进行交互、获取更多信息或执行特定操作,显著增强图表的互动体验。所有事件都通过 myChart.on(eventName, handler) 绑定,回调函数的 params 对象携带图表数据信息。
| 事件名称 | 触发时机 | 使用示例 |
|---|---|---|
| click | 单击元素时 | 查看数据详情 |
| dblclick | 双击元素时 | 跳转页面 |
| mousedown / mouseup | 按下 / 释放鼠标按钮(左键、右键、中键)时 | 自定义按压反馈 |
| mouseover | 鼠标移入元素时 | 高亮显示 |
| mouseout | 鼠标移出元素时 | 取消高亮 |
| mousemove | 鼠标在元素上移动时 | 提示框跟随 |
| contextmenu | 右键菜单时 | 自定义菜单 |
鼠标事件三要素:① 事件类型(click、mouseover 等);② 事件监听(通过 on() 绑定);③ 事件参数(params 对象传递数据信息)。
二、行为事件
行为事件指在特定交互动作下所触发的预设功能(如单击工具栏中的按钮、图例项等),通过组件交互直接控制图表的显示状态和数据呈现。行为事件不会自动触发,必须在代码中手动调用 myChart.dispatchAction({ type, … }) 触发。
| 事件名称 | 触发时机 | 使用示例 |
|---|---|---|
| action.highlight | 需要高亮某个数据项时 | 鼠标移入后高亮该图形 |
| action.downplay | 需要取消高亮某个数据项时 | 鼠标移出后取消高亮 |
| action.select | 需要选中某个数据项时 | 选中的数据会应用 select 配置的样式 |
| action.unselect | 需要取消选中某个数据项时 | 再次点击取消选中状态 |
| action.toggleSelect | 需要切换选中与否状态时 | 多选状态下切换 |
| action.showTip | 需要显示提示框时 | 轮播时同步显示提示框 |
| action.legendSelect 等 | 图例操作 | legendSelect / legendUnSelect / legendAllSelect / legendUnSelectAll |
三、鼠标事件与行为事件的异同
两类事件是一体两面:鼠标事件负责监听用户行为,行为事件负责控制图表状态,组合使用可实现循环高亮等复杂交互。
| 维度 | 鼠标事件 | 行为事件 |
|---|---|---|
| 触发方式 | 由用户操作自动触发 | 需开发者用代码手动触发 |
| 用途定位 | 监听用户行为 | 控制图表状态变化 |
| 调用方式 | 通过 on() 注册监听 | 通过 dispatchAction() 触发 |
| 交互主动性 | 被动响应用户 | 主动发起控制 |
相似之处:① 都作用于图表元素(数据项、系列、图形区域);② 都可用于交互处理;③ 都能实现图表联动;④ 都可通过 dataIndex、seriesIndex 等定位到具体的数据图形。
四、雷达图(radar)
雷达图是一种多维数据可视化图表,常用于展示不同类别的多维度数据,适合数据对比、分类问题(如地区、产品或人群偏好分析)。数据结构核心是指标轴与数据系列:每一条轴线表示一个维度,每个数据系列表示一个对象的多维数据。
案例分析要点:各地区用户购买偏好呈现显著地域特征——上海用户更偏爱购买柠檬,广东用户偏爱沃柑、红枸杞和砂糖橘,这与当地饮食习惯、文化背景及季节性因素有关。
五、矩形树图(treemap)
矩形树图用于展示层级结构数据:整个图形由一个大矩形划分为多个子矩形,每个矩形的面积由节点数值决定,支持多层嵌套(children),直观反映数据的层级关系与比例分布,适用于地区用户分布、市场份额比较、文件存储空间占比等场景。
| 配置项 | 作用说明 |
|---|---|
| series.data / children | 定义分层数据结构,支持多级嵌套 |
| leafDepth | 控制初始展开的层级深度,常用于聚焦上层或下层数据 |
| label | 设置标签是否显示、显示位置与格式,提升节点可读性 |
| levels | 为不同层级设置样式(颜色、边框),强化视觉分层效果 |
| itemStyle.borderWidth / borderColor | 矩形的边框宽度 / 边框颜色 |
| tooltip | 鼠标悬停时显示节点名称、数值 |
六、带时间轴的折线图(dataZoom)
时间轴通过数据缩放组件 dataZoom 实现,提供交互式数据探索能力——用户可通过拖动或缩放时间范围,动态聚焦于特定时间段内的数据细节,兼具折线图的趋势表达与时间维度的动态展示,支持多个数据系列同时对比群体差异。
案例分析要点:25-34 岁和 35-49 岁年龄段用户活跃度整体较高,是平台的主要活跃群体;18-24 岁和 50-59 岁年龄段活跃度相对较低但呈一定波动性。
七、嵌套饼图
嵌套饼图由内环和外环组成,用于表达主类与子类之间的上下级逻辑(内环展示水果、肉类等大类,外环展示苹果、葡萄等具体品种),特别适用于市场调研、消费分析、分类结构等数据场景。实现方式是在同一 option 中定义两个饼图系列,通过不同的 radius 控制内外位置。
数据分析要点:明确层级(大类进内环)、细化品种(子类进外环)、合理配色区分(不同颜色区分类别,增强层次感与辨识度)。
八、词云图(wordCloud,需插件)
词云图是基于文本数据的可视化图表,通过词语大小和颜色突出词频信息——频率越高字体越大,适合展示关键词的频率分布与重要程度,常用于用户评论分析、舆情监测、热点话题挖掘等。注意:词云图不是 ECharts 内置图表,需要额外引入 echarts-wordcloud 插件。
形状词云图(拓展):普通词云图在方形或圆形区域内随机布局单词;形状词云图的单词布局受限于自定义图片形状——通过 maskImage 属性传入一个 Image 对象(如水果轮廓图),词语将沿形状填充排布。
案例分析要点:“超赞”“准时”“专业”“信任”“好吃”等正面词汇频率较高,用户普遍满意;也存在“不好”“不满意”等负面词,但频率明显更低。
九、仪表盘(gauge)
基础仪表盘通过指针和刻度展示单一数值的圆形仪表图,直观反映指标的当前状态,适合关键性能指标(KPI)的实时监控,应用场景包括用户满意度分析、设备运行状态监测、业务目标达成度评估等。
| 配置项 | 作用说明 |
|---|---|
| min / max | 仪表盘刻度的最小值与最大值 |
| splitNumber | 仪表盘分割的段数(每 10 分一个大刻度即分割 10 段) |
| detail | 仪表盘详情,用于显示数值文本,formatter 支持模板变量 {value} |
| axisLine / axisLabel | 刻度轴线(可分区着色)与刻度标签 |
| pointer / progress / anchor | 指针样式 / 进度条 / 锚点(进阶美化配置) |
多标题仪表盘(拓展):与基础仪表盘的区别在于显示多个数据指标时,为每个指标配置独立的标题和详情——通过在 data 数组中为每个数据项定义 title.offsetCenter 与 detail.offsetCenter 分别设置标题和详情的位置,实现多指标布局。
实验任务6 学时 · 两类事件 + 六类图表
以东北大米、软籽石榴、红枸杞等 10 种农产品为指标轴(max 均为 1000),绘制广东、上海、江苏、浙江、山东、四川 6 个地区的雷达图,tooltip 用 formatter 函数逐项显示指标值;用 click 事件输出点击的地区名。
以广东(2.4 亿,含 21 个地市 children)、浙江(0.79 亿,含 11 个地市)、北京(0.302 亿)绘制矩形树图,设置 borderWidth、borderColor 与标签字号,观察广深佛莞的用户聚集。
为 4 个年龄段的活跃度折线图配置 dataZoom(inside + slider 两种类型),拖动滑块聚焦 2019/10—2023/12 中的任意时间段,对比各年龄段差异。
内环展示水果、肉类、蔬菜、水产四大类,外环展示西瓜、柑橘、鸡肉、辣椒等 16 个品种(radius 分别为 [0,'30%'] 与 ['45%','60%']),并用 dispatchAction 高亮第一个品种扇区。
引入 echarts-wordcloud 插件,以 50 个评论关键词及词频绘制词云图(sizeRange [10,50]),悬停查看词频。拓展:用 maskImage 载入自定义形状图片,制作形状词云图。
以满意度得分 82.7 绘制仪表盘(min 0、max 100、每 10 分一个大刻度)。拓展:用 title/detail 的 offsetCenter 制作多标题仪表盘,同时展示多个指标。
代码示例7 组在线可运行图表
课后习题
- A. mousedown
- B. click
- C. mouseup
- D. mouseover
- A. 高亮指定的数据
- B. 选中指定的数据,选中的数据会应用 select 配置的样式
- C. 取消选中指定的数据
- D. 切换选中与否的状态
- A. series
- B. xAxis
- C. radar
- D. data
- A. line
- B. bar
- C. gauge
- D. pie
- A. itemStyle.borderWidth
- B. series.borderWidth
- C. treemap.borderWidth
- D. data.borderWidth
操作题
绘制不同城市等级冷冻生鲜购买率雷达图
以一线、新一线、二线、三线及以下城市在水果、肉类、蔬菜、水产、乳制品、粮油副食 6 个品类的冷冻生鲜购买率为指标,绘制可交互雷达图。
实训题
农产品电商用户行为综合分析
某农村电商平台收集了用户行为数据:① 各年龄段(18-24 / 25-34 / 35-49 / 50-59 岁)连续 12 个月的活跃度;② 用户评论关键词 30 个(含词频);③ 平台季度满意度得分 4 期;④ 用户购买农产品的品类偏好(4 大类 × 16 品种)。请综合运用本项目所学完成分析报告。
农村电商可视化大屏
项目概述
项目描述
本项目把前四个项目学到的图表与交互能力"装进"一块可视化大屏:先学主题——用一套配色统一整体视觉风格;再学多图表联动——让柱状图与折线图共享悬停状态,趋势对比更直观;接着学异步数据加载——用 jQuery 的 $.get() 从 JSON 文件取数,实现"数据与图表分离";最后综合运用以上技术,搭建"某农村电商平台数据分析"可视化大屏,包含农村电商发展、销售分析、用户分析三个页签、20 余张图表。
学习目标
- 掌握主题的下载、引入与使用,能调用 roma、shine、dark 等内置主题
- 掌握主题切换的完整流程:
dispose()销毁旧实例 →init()重新初始化 →setOption()重绘 - 掌握多图表联动的两种实现方式:指定 group ID 连接与实例数组连接,并能用
disconnect()解除联动 - 掌握异步数据加载:
$.get()获取 JSON 数据,配合showLoading() / hideLoading()显示加载动画 - 掌握可视化大屏的页面结构(屏幕头部 + 网格布局)与深色风格实现,理解多图表页签拆分的思路
理论要点
知识点详解结合课件展开 · 点击标题展开/收起
一、主题:统一图表的视觉风格
主题是什么?主题是一组预定义的样式配置(配色、字体、背景、轴线、图例等)。把主题名传给 echarts.init(dom, themeName) 的第二个参数后,整个图表自动按该风格渲染,无需逐项配置颜色。
主题的使用步骤
从 ECharts 官网主题编辑器下载 roma.js、shine.js 等主题文件,或在线定制后生成 customed.js 自定义主题。
在页面中通过 <script src="js/roma.js"></script> 引入——主题文件内部会自动调用 registerTheme() 完成注册。
echarts.init(document.getElementById('main'), 'roma'),第二个参数传入主题名。
先 myChart.dispose() 销毁实例,再重新 init() 并 setOption() 重绘。
echarts.registerTheme('roma', {...}) 直接在代码内注册主题对象演示该机制,效果与引入主题文件一致。二、多图表联动:让两个图表"心有灵犀"
什么是联动?当两张图表使用同一组类目轴数据(如"主要肉类销售总量"的柱状图与折线图)时,联动让鼠标在任意图表上悬停,另一张图同步显示对应年份的指示器与提示框,便于对比趋势。
方式一:指定 group ID(适合多图表)
方式二:实例数组(适合少量图表)
注意:联动依赖各图表的横轴数据一致(同为类目轴且类目相同),否则指示器位置无法对齐。
三、异步数据加载:让图表"随时更新"
为什么需要异步加载?真实业务中数据持续变化,把数据写死在 JS 里无法更新。将数据保存为 JSON 文件,页面加载后再异步请求数据渲染图表,实现"数据与图表分离、改数据不改代码"。
jQuery 异步取数写法
JSON 数据文件示例(data/sale.json)
四、可视化大屏:综合分析结果的呈现
什么是可视化大屏?把多张图表按业务逻辑组织在同一屏幕上,用于监控中心、指挥大厅等场景。本项目大屏由三个页签组成:农村电商发展(全国快递业务量、主要农产品生产总量、电商平台数量、农村电商零售额、多品类零售额占比)、销售分析(竞争对手的市场份额、不同种类商品市场占比、订单来源占比、快递包裹数量、活跃商家数量、订单数量与销售额随时间变化、各销售环节转化率)、用户分析(部分地区的用户购买喜好、用户分布、用户偏向的农产品、不同年龄段用户活跃度、用户满意度、用户对产品或服务的评论)。
大屏页面结构
设计要点
- 深色背景(如 #0b1d34)衬托数据光效,标题与装饰线使用青绿色系;
- 网格布局(pure-g / pure-u-* 或 CSS Grid)控制每张图表的尺寸与位置,常用 1/4、1/3、1/2 等比例组合;
- 每张图表一个独立的初始化函数,配合
$.get()统一异步取数,同一 JSON 可被多张图表共用一次请求; - 三个页签共享头部导航,各自独立一个 HTML 页面,通过链接相互跳转。
实验任务8 学时 · 主题 + 联动 + 异步加载 + 大屏
引入 roma、shine、infographic、macarons、dark、vintage 六套主题文件,以"不同月份部分水产价格"(8 种鱼 × 8/9/10 月柱状图)为基础图表,用下拉选择框切换主题;切换时先 dispose() 销毁实例,再重新 init() 并 setOption() 重绘。
绘制"主要肉类销售总量"柱状图(猪肉 / 牛肉 / 羊肉)与折线图(合计),用 chart.group = 'group1' + echarts.connect('group1') 实现联动;再添加按钮,点击后调用 echarts.disconnect('group1') 解除联动,观察悬停行为的变化。
新建 develop.html,用 $.get("data/develop.json") 加载数据,绘制全国快递业务量(柱)、主要农产品生产总量(多系列柱)、电商平台数量(柱)、农村电商零售额(折线)、多品类零售额占比(堆叠柱)5 张图表。
新建 sales.html,用 $.get("data/sales.json") 加载数据,绘制竞争对手的市场份额(饼)、不同种类商品市场占比(饼)、订单来源占比(环形)、快递包裹数量(柱)、活跃商家数量(多系列柱)、订单数量与销售额随时间变化(双轴折线)、各销售环节转化率(柱)7 张图表。
新建 user.html,额外引入 echarts-wordcloud 插件,用 $.get("data/user.json") 加载数据,绘制部分地区的用户购买喜好(雷达)、用户分布(矩形树图)、用户偏向的农产品(嵌套饼图)、不同年龄段用户活跃度(折线 + dataZoom)、用户满意度(仪表盘)、用户评论(词云)6 张图表,复用项目 4 的交互技巧。
代码示例4 组在线可运行示例
课后习题
- A. 下载主题 .json 文件,通过 CSS 引入
- B. 直接在页面中编写样式代码修改主题
- C. 下载主题 .js 文件,在 HTML 页面中引入该文件后使用
- D. 修改 ECharts 的源代码实现主题更换
- A. 无需下载文件,直接在页面中编写样式配置选项
- B. 选择 .js 格式文件下载,并在 HTML 页面中引入该文件
- C. 只能下载 .json 格式文件,无需在页面中引入
- D. 必须修改 ECharts 的源代码才能使用
- A. 将图表实例转换为 JSON 格式后合并即可联动
- B. 为各个图表实例指定相同的 group ID,再调用 echarts.connect 并传入该 ID
- C. 修改两张图表的 series 数据使它们共用相同的颜色
- D. 在每张图表中编写相同的事件监听代码
- A. 不能,数据必须在初始化时一次性配置
- B. 不能,数据更新必须修改源代码
- C. 可以,使用 jQuery 等工具异步获取数据后,通过 setOption 方法更新图表
- D. 可以,但只能通过刷新整个页面更新数据
- A. ECharts.js
- B. jQuery.min.js
- C. develop.js(自定义脚本)
- D. index.js
操作题
绘制部分水产品价格柱状图
已知 13 种水产品的价格(单位:元/公斤):大黄花鱼 36、小黄花鱼 30、大带鱼 70、中小带鱼 26、马鲛鱼 32、鲳鱼 80、石斑鱼 120、海参 120、鱿鱼 40、八爪鱼 50、蛤蜊 8、扇贝 10、牡蛎 10。
$.get() 异步加载并绘制柱状图;② x 轴标签设置 interval: 0 并旋转 45°,保证 13 个品种完整显示;③ 在图表上尝试切换主题(如 dark、vintage);④ 用 showLoading / hideLoading 模拟加载过程。实训题
家乡好物可视化大屏
收集家乡 3~5 种特色农产品的价格、销量、评价数据(可自拟),制作一块深色可视化大屏。
$.get() 从 JSON 文件异步加载数据;④ 至少两张图表实现联动;⑤ 输出 300 字以上的分析结论,说明大屏各模块的业务含义。综合项目:电商平台运营数据可视化
项目概述
项目背景
随着互联网的普及,电子商务快速融入人们生活。某电商平台凭借商品种类丰富、市场覆盖广泛吸引大量消费者,其中服饰类商品销量表现突出。在激烈的市场竞争中,深入分析运营数据能帮助平台洞察消费者偏好与市场需求变化、挖掘业务优化机会;借助 ECharts 将销售、物流等复杂数据可视化,可以揭示潜在趋势与关联,为管理层提供直观、易理解的决策依据。
项目描述
本项目是前 5 个项目的综合应用:围绕"分析商品销售情况 → 分析商品订单情况 → 分析商品物流情况 → 大屏可视化"四条主线,使用 9 张数据表、9 类图表完成电商平台运营数据可视化分析,最后把全部图表组装成"电商企业平台运营数据分析"大屏。分析流程为:获取原始数据 → 可视化分析 → 创建运营数据仪表板。
学习目标
- 掌握综合项目分析流程:数据准备 → 图表选型 → 页面实现 → 大屏组装
- 掌握用 fetch() 异步读取 JSON 数据并渲染图表(对比项目 5 的 $.get())
- 掌握堆叠条形图(stack)、柱线混合图与双 Y 轴(yAxisIndex)的配置
- 掌握data.map() 动态映射颜色、emphasis 悬停阴影等进阶技巧
- 掌握用 CSS 网格布局组装多图表大屏,输出运营分析结论
理论要点
知识点详解结合课件展开 · 点击标题展开/收起
一、综合项目的数据准备与任务拆分
本项目围绕销售分析、订单分析、物流分析三个方向组织数据,共使用 9 张 JSON 数据表:
| 分析方向 | 数据表 | 可视化图表 |
|---|---|---|
| 销售分析 | 不同品类商品的销售数量.json | 柱状图:5 个品类销量对比 |
| 不同渠道销售数据.json | 堆叠条形图:A/B/C 渠道 × 5 品类 | |
| 每日销售数据.json | 柱线混合图:3 月 2—8 日金额 + 数量 | |
| 不同时间段销售数量.json | 柱线组合图:6 个时间段,双 Y 轴 | |
| 完成率.json | 仪表盘:本周销售完成率 86% | |
| 订单分析 | 不同支付方式数据.json | 圆环图:支付宝 / 微信 / 银联占比 |
| 订单分析 | 不同下单方式数据.json | 饼图:手机端 738 单 / PC 端 119 单 |
| 订单分析 | 是否使用优惠.json | 饼图:使用 138 / 未使用 719 |
| 物流分析 | 不同物流方式数据.json | 圆环图:四家快递订单量占比 |
数据导入统一使用 JavaScript 的 fetch() 方法读取 JSON 文件。任务可拆分为:绘制 9 张图表(任务 6.1—6.9),再组装大屏(任务 6.10)。
二、fetch() 异步加载 JSON 数据
项目 5 用 jQuery 的 $.get() 异步取数;本项目改用原生 JavaScript 的 fetch(),无需引入任何库。fetch 返回 Promise,用 .then() 链式处理响应与数据。
三、堆叠条形图与双 Y 轴组合图
堆叠条形图(不同渠道 × 不同品类)
把 x 轴设为数值轴(value)、y 轴设为类目轴(category)得到横向条形图;再在三个渠道系列中同时设置 stack: 'total',同一类目下的系列会堆叠成一整条,直观对比各品类在三个渠道的总量与结构。
双 Y 轴组合图(每日 / 时间段销售)
销售总金额与销售数量量纲不同(元 vs 件),必须使用两个 Y 轴:yAxis 写成数组定义左右两轴,系列中用 yAxisIndex 指定挂在哪个轴上。柱状图表达金额、折线图表达数量,趋势同步可读。
四、数据动态映射与交互高亮
data.map() 动态映射颜色
支付方式数据源为每个数据项预置了 color 属性:{ "value": 507, "name": "支付宝", "color": "#316695" }。直接传给 ECharts 无法生效,需要先用 data.map() 遍历,把颜色映射进 itemStyle.color:
emphasis 悬停高亮
物流圆环图通过 emphasis 配置数据项在悬停时的阴影效果,让被选中的数据项"浮"出来:
五、大屏可视化:组装运营仪表板
完成 9 张图表后,按三步组装大屏:
用 CSS 合理划分各模块区域(如顶部为品类销量、中部为完成率与订单占比、底部为渠道与时段),确保美观实用。
每个模块一个 chartBlock:头部(chartTit 标题)+ 主体(chartDiv 容器),图表类型与展示内容匹配。
通过 fetch() 将各数据表导入对应图表,实时展示;最后整体调试布局与交互。
大屏结论示例:本周销售完成率 86%,任务接近完成;晚上时段与 3 月 8 日销售额最高;支付宝 + 手机端是主流;韵达快递承担主要配送。
实验任务8 学时 · 9 张图表 + 大屏组装
用 fetch('data/不同品类销售数量.json') 加载数据,绘制柱状图(项链 651 / 手链 778 / 戒指 228 / 耳饰 996 / 发饰 510),x 轴标签 interval: 0 全部显示,用 visualMap 按数值渐变着色。
绘制横向堆叠条形图:x 轴为数值轴、y 轴为类目轴(发饰 / 戒指 / 手链 / 耳饰 / 项链),A/B/C 三个渠道系列设置 stack: 'total',观察 A 渠道在发饰(255)与耳饰(433)上的贡献。
绘制 3 月 2—8 日双 Y 轴组合图:柱状图表示销售总金额(左轴)、平滑折线表示销售数量(右轴),tooltip 用 axis 触发,解读 3 月 5 日"金额降、数量稳"与 3 月 8 日峰值。
绘制凌晨至晚上 6 个时段的双 Y 轴组合图,并给销售金额柱添加 markLine 平均线,分析"晚上最高、凌晨最低"的时段规律。
绘制仪表盘展示 86%:radius: '70%' 控制大小、center 调整位置,axisLine 用分段颜色(0-30/30-70/70-100 三档)区分完成区间。
支付宝 507 / 微信 287 / 银联 63,数据源预置 color 属性,用 data.map() 动态映射到 itemStyle.color,绘制圆环图并总结支付习惯。
手机端 738 / PC 端 119,绘制饼图,用 label 显示百分比,说明移动端下单已成为主流。
使用优惠 138 / 未使用 719,绘制饼图,结合"卡券数量有限、满减门槛"等业务原因解读数据。
申通 134 / 圆通 230 / 韵达 274 / 中通 219,绘制圆环图,并通过 emphasis 配置悬停阴影(shadowBlur / shadowOffsetX / shadowColor)增强交互。
参照 total.html:CSS 定义大屏布局(顶部品类、中部完成率与订单占比、底部渠道与时段),把全部图表组装成"电商企业平台运营数据分析"大屏并输出分析结论。
代码示例8 组在线可运行示例
课后习题
- A. $.get()
- B. fetch()
- C. getElementById()
- D. import
fetch('data/xxx.json').then(res => res.json()).then(data => {...})。A 是项目 5 中 jQuery 的取数方式;C 是获取 DOM 元素;D 用于 ES Module 导入。- A. 在每个系列中设置 stack: 'total'
- B. 在每个系列中设置 type: 'stack'
- C. 在 xAxis 中设置 stacked: true
- D. 在 yAxis 中设置 stack: 'total'
stack: 'total',这些系列就会在同类目下堆叠显示。横向堆叠条形图的 x 轴为数值轴(value)、y 轴为类目轴(category)。- A. axis: 1
- B. yAxisIndex: 1
- C. yAxis: 'right'
- D. axisIndex: 2
yAxisIndex: 1 指定挂在第二个 Y 轴上。两个 Y 轴可分别设置 name、min、max、interval。- A. data.filter()
- B. data.reduce()
- C. data.map()
- D. data.sort()
data.map() 遍历数组并返回新数组,把 {value, name, color} 映射为 {value, name, itemStyle: {color}} 格式。filter 用于筛选、reduce 用于汇总、sort 用于排序。- A. 82%
- B. 84%
- C. 86%
- D. 88%
操作题
全国交通客运量数据可视化分析
某省交通部门收集了客运量数据:① 各类交通方式客运量:铁路 361905 / 公路 991399 / 水运 22083 / 航空 61087(万人);② 铁路旅客周转量(3—12 月,亿人公里):1136.21、1283.65、1276.19、1268.70、1675.02、1871.74、1229.46、1303.52、981.35、958.49;③ 铁路客运量与同比增长率(3—12 月):客运量 32120、36015、36100、36000、42670、47395、34166、37269、30423、29747(万人),同比增长率 14.6、9.6、10.8、10.2、4.3、10.6、5.1、6.0、8.8、2.6(%)。
fetch() 加载 traffic.json,绘制饼图展示各类交通方式客运量占比;② 绘制平滑折线图展示铁路旅客周转量变化;③ 绘制柱线混合图:柱状图表示铁路客运量(左轴,min 20000、max 50000、间隔 10000)、折线图表示同比增长率(右轴,min 0、max 15、间隔 5),axisPointer 用 cross 十字准线。实训题
校园 / 本地电商平台运营数据可视化大屏
以校园超市或本地特产电商为对象,收集一周的运营数据(可自拟):各品类销量、各渠道销量、每日销售额与销量、各支付方式占比、物流方式占比、完成率等。
大数据分析可视化平台
项目概述
项目背景
前 6 个项目都是通过手写 ECharts 代码完成数据可视化。但在真实的企业与教学场景中,还有大量不具备编程基础的业务人员同样需要完成可视化分析。广东泰迪智能科技股份有限公司自主研发的大数据分析可视化平台——一款基于 ECharts、用于可视化仪表盘展示的零门槛可视化工具,将常用图表封装为"拖曳式"操作,适用于高校教学和各领域企业。
项目描述
本项目以电商平台运营数据为例,使用大数据分析可视化平台完成"上传数据 → 设置指标 → 配置图表库 → 设计仪表盘 → 查看大屏"的全流程配置,把第 6 个项目中的 9 张数据表与 9 类图表在平台上重新实现一遍,最终输出可全屏展示、可生成链接分享的电商运营数据可视化大屏,体会平台化、流程化的可视化工作方式。
学习目标
- 了解大数据分析可视化平台的概念、特点与"公共空间"模块
- 掌握数据空间配置:数据库连接(DB2 / SQL Server / MySQL / Oracle / PostgreSQL)与数据文件上传
- 掌握指标的 5 种构建方式:原数据、四则运算、分组聚合、筛选、SQL 脚本
- 掌握图表库常用图表类型,以及仪表盘固定布局(9 种)与自由布局的设计
- 掌握大屏 3 种风格(默认 / 深色 / 浅色)的选择与展示,完成全流程配置
理论要点
知识点详解结合课件展开 · 点击标题展开/收起
一、平台简介与公共空间
大数据分析可视化平台由广东泰迪智能科技股份有限公司自主研发、基于 ECharts、用于可视化仪表盘展示,是一款适用于高校教学和各领域企业的零门槛可视化工具,主要特点如下:
- 无须编程:图表通过拖曳的方式操作,方便、快捷。
- 图表丰富:提供多种类、多样式的可交互式图表,自定义程度高。
- 模板多样:提供多个仪表盘布局和项目模板,满足多样化需求。
- 源码可查:支持查看图表源码,方便教学。
- 数据实时:支持数据定时更新,实时反映数据变化趋势。
用户登录后首先进入公共空间,这里展示所有公开大屏的信息:每个公开大屏均具备预览和复制功能——单击"复制"可将该大屏下的页面和数据一起复制到各功能模块,系统会自动添加"日期+随机数字"后缀以示区别;用户也可将自己设计好的大屏分享到公共空间供他人预览使用;自己分享的大屏可设为私有(不再公开显示)或删除(删除该大屏全部数据)。
二、数据空间:数据文件与数据库连接
"数据空间"模块分为数据库连接与数据文件两部分,主要用于添加 / 管理数据:
- 数据库连接:数据来源于数据库,支持 DB2、SQL Server、MySQL、Oracle、PostgreSQL 等常用数据库类型。连接成功后,数据库信息显示在数据列表中。
- 数据文件:支持本地 CSV 文件上传和数据库文件上传,上传成功并保存后,数据信息显示在列表中。
本项目需要上传 9 个 CSV 数据文件(与项目 6 的 9 张 JSON 表对应):
| 数据文件(.csv) | 对应图表 | 关键字段 |
|---|---|---|
| 不同品类商品的销售数量 | 柱状图 | 分类 / 销售数量 |
| 不同渠道的不同品类商品的销售数量 | 堆叠条形图 | 分类 / A渠道 / B渠道 / C渠道 |
| 每日的销售总金额 | 柱状图 | 订单日期 / 销售总金额 |
| 不同时间段销售总金额与销售数量 | 柱线混合图 | 时间段 / 销售额 / 销售数量 |
| 本周完成率 | 仪表盘 | 值(86) |
| 不同支付方式的占比 | 圆环图 | Name / Value |
| 不同下单方式的占比 | 饼图 | Name / Value |
| 用户使用优惠占比 | 饼图 | Name / Value |
| 物流公司的占比 | 圆环图 | Name / Value |
三、指标:5 种数据构建方式
"指标"通过选择上传数据文件的表单,对原数据进行构建,共 5 种方式:
| 构建方式 | 说明 | 本项目示例 |
|---|---|---|
| 原数据 | 对表单里的原始数据进行指标构建,不改变数据内容 | 支付 / 下单 / 物流 / 优惠 / 完成率数据 |
| 四则运算 | 运用加、减、乘、除对表单字段进行计算 | 客单价 = 销售总金额 ÷ 销售数量 |
| 分组聚合 | 分别选择两个字段进行分组和聚合运算 | 按渠道分组求销量合计 |
| 筛选 | 对数值或字符进行筛选,可不断添加条件 | 筛选销售额 > 15000 元的时段 |
| SQL 脚本 | 前几种方式不满足需求时,用 SQL 自定义 | SELECT 时间段, SUM(销售总金额) … |
以"不同时间段销售总金额与销售数量.csv"为例,选择四则运算:销售总金额 ÷ 销售数量 = 客单价(元/件),即可在指标列表中得到每个时段的客单价字段,供图表库直接调用。
四、图表库:常用图表类型
"图表库"模块用于添加 / 管理图表,并对图表进行设计。平台提供的常见图表类型如下:
- 折线图:基础折线图、柱线混合图、堆叠折线图
- 柱状图:基础柱状图、堆叠柱状图、正负柱状图、横向柱状图
- 饼图:基础饼图、环形饼图、嵌套环形图
- 散点图:基础散点图、复合散点图
- 地图:区域地图、中国地图
- 其他:词云图、雷达图、仪表盘、漏斗图、河流图、热力图、旭日图、基础箱线图
在本项目中,图表库主要完成 9 张图表的创建:品类销量用基础柱状图、渠道品类用堆叠柱状图(或横向)、支付 / 物流占比用环形饼图、下单 / 优惠占比用基础饼图、每日 / 时段销售用柱线混合图、完成率用仪表盘。设计好的图表保存在"个人图表"中,供仪表盘调用。
五、仪表盘:固定布局与自由布局
"仪表盘"模块由仪表盘与个人图表两部分组成。仪表盘的设计分为固定布局和自由布局:
- 固定布局:主体画布由多个小画布组成,每个小画布放置一张在图表库中设计好的图表。固定布局包含 9 种可视化经典布局,每种各有特点,最多可同时展示 9 张图表。
- 自由布局:可自定义图表显示方式。通过新增自由布局、拖曳个人图表到画布中,使用边框、装饰、文本等样式装饰图表,构成丰富且极具个性搭配的图表。
本项目选择 3×3 九宫格固定布局,把 9 张图表(或其中 6 张核心图表)拖入各小画布,调整位置与大小后保存,即完成电商运营数据仪表盘的设计。
六、大屏与项目实施流程
"大屏"提供默认、深色、浅色共 3 种风格的主题供选择,主要由各个仪表盘组成:大屏可选 1~6 张仪表盘,新增填写的名称为大屏显示名称;大屏可全屏展示、分享到公共空间、生成链接使用。
使用平台实现电商平台运营数据可视化的完整流程如下:
上传 9 个 CSV 数据文件,在列表中预览确认数据正确。
对数据文件构建指标:原数据直接使用 + 四则运算生成客单价。
选择指标与图表类型,创建 9 张图表到"个人图表"。
选择固定布局(如 3×3),把个人图表拖入小画布,调整大小保存。
选择风格主题,加入 1~6 张仪表盘,全屏展示并生成链接分享。
实验任务2 学时 · 五步完成平台全流程
登录大数据分析可视化平台,进入"数据空间"→"数据文件",上传项目 7 的 9 个 CSV 数据文件(不同品类商品 / 不同渠道品类 / 每日销售金额 / 时间段销售 / 完成率 / 支付方式 / 下单方式 / 使用优惠 / 物流公司),上传后在列表中逐个预览,核对数据与项目 6 的 JSON 表一致。
进入"指标"模块,选择数据文件构建指标:支付 / 下单 / 物流 / 优惠 / 完成率等文件直接使用"原数据"方式;"不同时间段销售总金额与销售数量"用"四则运算"构建客单价 = 销售总金额 ÷ 销售数量;尝试"分组聚合"按渠道聚合销量、"筛选"筛出销售额大于 15000 元的时段。
进入"图表库"新建 9 张图表:品类销量(基础柱状图)、渠道品类(堆叠柱状图)、每日销售金额(柱状图)、时段销售(柱线混合图)、完成率(仪表盘)、支付占比(环形饼图)、下单占比(饼图)、优惠占比(饼图)、物流占比(环形饼图),逐一保存到"个人图表"。
进入"仪表盘",选择"固定布局"中的 3×3 九宫格布局,从"个人图表"拖入 6~9 张图表到各个小画布,调整位置与大小;再尝试"自由布局",拖曳图表并用边框 / 装饰 / 文本样式美化,比较两种布局的差异。
进入"大屏"模块,新增大屏并命名为"电商平台运营数据分析";依次选择"默认 / 深色 / 浅色"3 种风格主题观察效果,选择一种加入 1~2 张已设计的仪表盘;全屏展示,分享到"公共空间"并生成访问链接,最后输出 300 字以上的分析结论(销量最高品类、主流支付与下单方式、高峰时段、物流主力等)。
代码示例5 组平台配置效果模拟
平台以"拖曳配置"代替编程,但每一类配置背后都对应一组 ECharts 配置。以下示例用代码模拟平台各模块的配置效果,帮助理解"平台操作 ↔ 代码实现"的对应关系。
课后习题
- A. 阿里云
- B. 腾讯云
- C. 广东泰迪智能科技股份有限公司
- D. 百度
- A. MySQL
- B. Redis
- C. MongoDB
- D. SQLite
- A. 四则运算
- B. 分组聚合
- C. 数据清洗
- D. SQL 脚本
- A. 8 种,8 张
- B. 9 种,9 张
- C. 10 种,10 张
- D. 6 种,6 张
- A. 浅色,1~6 张
- B. 护眼,1~4 张
- C. 浅色,2~8 张
- D. 科技,1~6 张
操作题
使用平台完成电商运营数据可视化全流程
使用大数据分析可视化平台,以上传"不同品类商品的销售数量.csv"与"不同时间段销售总金额与销售数量.csv"等数据文件为例,完成从数据到发布的全流程配置。
实训题
用 ECharts 编程复现平台仪表盘
平台"支持查看图表源码"——把平台配置出的图表导出为 ECharts 配置。参照这一能力,不使用平台,改用代码实现一个"电商运营数据仪表盘"页面:品类销量柱状图 + 渠道堆叠条形图 + 支付方式圆环图 + 下单方式饼图 + 物流圆环图 + 完成率仪表盘。