Web数据可视化 ECharts 5 · 大数据技术专业 · 农村电商案例贯穿
大数据技术专业 · 专业必修课 · 64学时 / 4学分

Web数据可视化ECharts 5 · 微课版

以“农村电商”案例贯穿全课程:从认识图表、绘制基础图形,到交互分析、异步加载,最终完成可视化大屏与大数据分析可视化平台——用数据讲好乡村振兴的故事。

64总学时
24 + 40理论 + 实验学时
7教学项目
20+ECharts 图表类型

课程简介

随着数字经济的发展,数据资源的战略地位日益凸显,市场对数据分析与可视化人才的需求激增。本课程是大数据技术类专业的必修课程,以 ECharts 5 为核心技术工具,围绕农村电商发展趋势、销售趋势、用户行为三条业务主线组织教学,最后通过电商平台运营综合项目大数据分析可视化平台完成能力进阶。

课程坚持理论与实践一体化:课堂上“任务引入概念”,实验中动手绘图,全部实验围绕真实业务数据展开,学完即可迁移到企业级数据可视化岗位场景。

知识目标

掌握数据可视化基本概念与流程;掌握 ECharts 5 基础架构、常用术语与配置项体系;理解坐标系、组件、事件与主题机制。

能力目标

能熟练绘制柱状图、折线图、饼图、雷达图、词云图等 20 余种图表;能实现图表交互、多图表联动与异步数据加载;能独立完成可视化大屏的设计与制作。

素质目标

培养数据思维与图表审美;具备将数据转化为决策支持的能力;树立用数据服务乡村振兴与数字经济的职业意识。

学时分配概览总计 64 学时(理论 24 + 实验 40)· 另有前置知识单元(HTML/CSS/JS)供零基础同学自学

序号项目名称核心知识点理论实验合计
1进入数据可视化世界可视化概念、流程、工具、ECharts 图表认识224
2农村电商发展趋势分析基础架构、坐标系、标题图例、柱状图/面积图/瀑布图/折线图4610
3农村电商销售趋势分析工具栏/提示框/标记组件、饼图/圆环图/玫瑰图/散点图/漏斗图4812
4农村电商用户行为分析鼠标事件、行为事件、雷达图/矩形树图/词云图/仪表盘4610
5农村电商可视化大屏动态主题、多图表联动、异步数据加载、大屏制作6814
6综合项目:电商平台运营数据可视化柱状图/堆叠图/柱线混合图/仪表盘/饼图 + 大屏可视化2810
7大数据分析可视化平台数据空间、指标配置、图表库、仪表盘、大屏224
总计244064

前置课程学习HTML · CSS · JavaScript · JSON —— 数据可视化的“地基”

本课程在浏览器中编写 JavaScript 代码完成可视化,需要具备 Web 前端“三件套”基础。零基础或基础薄弱的同学,请先进入「项目〇:HTML/CSS/JavaScript 前置知识」——包含知识点详解、在线运行案例与课后练习,可对照自学、边学边练。

HTML 基础

常用标签、div 容器、script 引入方式

进入章节 →

CSS 基础

选择器、盒模型、Flex 布局,为图表准备容器

进入章节 →

JavaScript 基础

变量、函数、数组与对象、DOM 操作

进入章节 →

JSON 与异步

JSON 格式、fetch 异步加载,数据可视化必备

进入章节 →
进入前置知识学习 →
SYLLABUS

课程概况

课程性质 · 教学大纲 · 学时安排 · 考核方式
总学时 64理论 24 + 实验 404.0 学分

课程基本信息

课程名称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%(提交作品)

30%

平时成绩

作业 + 考勤:平时作业(各项目课后习题、实验任务成果)与课堂出勤情况,综合评定计入总评。

70%

期末大作业

提交作品形式:围绕农村电商主题(或自选主题),独立完成一个基于 ECharts 的数据可视化作品(含可视化大屏 / 分析图表 + 设计说明),以「作品 + 答辩」方式评定。

总评成绩 = 平时成绩(作业 + 考勤)× 30% + 期末大作业(作品)× 70%。课程突出过程性考核与作品导向,最终总评成绩由任课教师在期末统一核算。

教材与参考资料

  • 教材:肖静,张良均.Web数据可视化(ECharts 5)(微课版)[M].北京:人民邮电出版社.2025.
  • 参考资料:
  • [1] 张治斌,张良均.Python数据分析与应用(第3版)(微课版)[M].北京:人民邮电出版社.2025.
  • [2] 范路桥,张良均.Web数据可视化(ECharts版)[M].北京:人民邮电出版社.2021.
  • 在线资源:ECharts 官方文档 · 官方图表示例 · 主题编辑器
项目〇

HTML/CSS/JavaScript 前置知识

Web 前端“三件套” · 数据可视化的地基 · 零基础可学
选修 · 自学零基础入门建议 8 学时

项目概述

项目描述

《Web数据可视化(ECharts 5)》的一切代码都运行在浏览器中:HTML 负责搭建页面结构(为图表准备 div 容器),CSS 负责样式与布局(让页面和大屏美观),JavaScript 负责逻辑与数据(配置图表、处理数据、响应用户操作)。本项目系统梳理这三门前置技术,让你带着扎实的基础进入项目一,后续学习事半功倍。

学习目标

  • 掌握 HTML 文档结构与常用标签,能独立搭建包含图表容器的网页
  • 掌握 CSS 选择器、盒模型与 Flex 布局,能为页面和图表容器设置样式
  • 掌握 JavaScript 变量、函数、数组与对象,能加工处理图表所需数据
  • 掌握 DOM 操作与事件监听,能实现页面交互(点击、悬停等)
  • 理解 JSON 数据格式,能解析数据并渲染到页面
  • 了解 异步加载(Promise / fetch),为项目五的异步数据加载打基础

理论要点六大知识模块

HTML 结构网页的骨架:标签、属性、文档结构,图表容器就是一个设置了宽高的 div。
CSS 样式网页的外观:选择器、盒模型、Flex 布局,让页面干净漂亮。
JS 逻辑网页的大脑:变量、函数、数组与对象,负责处理数据和驱动图表。
DOM 交互网页的响应:获取元素、修改内容与样式、事件监听,实现人机交互。
JSON 数据数据的中转:键值对结构、parse/stringify,是图表数据的主要载体。
异步加载数据的搬运:Promise 与 fetch 异步获取数据,大屏与图表数据的来源。

知识点详解点击标题展开/收起 · 与 ECharts 学习直接挂钩

一、HTML 基础:网页的骨架

HTML(HyperText Markup Language,超文本标记语言)用标签描述网页内容的结构。浏览器读取 HTML 文档,将其渲染为一个可视化的页面。

1. 文档基本结构
<!DOCTYPE html> <!-- 文档类型声明,必须是第一行 --> <html lang="zh-CN"> <!-- 根元素 --> <head> <!-- 头部:给浏览器的信息 --> <meta charset="UTF-8"> <!-- 字符编码,中文不乱码的关键 --> <title>页面标题</title> <script src="echarts.min.js"></script> <!-- 引入 ECharts --> </head> <body> <!-- 主体:页面可见内容 --> <h1>标题文字</h1> <div id="chart" style="width:600px;height:400px"></div> </body> </html>
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. 块级元素与行内元素
<!-- 块级元素:独占一行、可设宽高(div / p / h1~h6 / ul li / table) --> <div>我是一个块,占满整行</div> <!-- 行内元素:不换行、宽高由内容决定(span / a / img / b / i) --> <span>我是行内的</span><span>,我和前一个 span 在同一行</span>
5. 链接、图片与表单控件
<a href="https://echarts.apache.org" target="_blank">打开 ECharts 官网</a> <!-- 超链接 --> <img src="logo.png" alt="logo" width="120"> <!-- 图片 --> <input type="text" placeholder="请输入商品名"> <!-- 输入框 --> <button type="button">查询</button> <!-- 按钮 -->
与大屏布局的联系:可视化大屏上既有块级的图表容器(div),也常出现行内的标签文字(span)、跳转链接(a)、查询按钮(button)——分清块级与行内,布局才不会乱。

二、CSS 基础:网页的样式

CSS(Cascading Style Sheets,层叠样式表)描述 HTML 元素的呈现方式:颜色、大小、间距、布局。CSS 通过选择器找到元素并施加样式。

1. 三种基本选择器
/* 标签选择器:作用于所有 p 标签 */ p { color: #333; } /* 类选择器:作用于 class="box" 的所有元素,以英文句点开头 */ .box { border: 1px solid #ddd; padding: 12px; } /* id 选择器:作用于 id="chart" 的元素,以 # 开头,页面唯一 */ #chart { width: 600px; height: 400px; }
2. 盒模型

每个元素都是一个“盒子”,从内到外依次是:内容 content → 内边距 padding → 边框 border → 外边距 margin。理解盒模型,才能精确控制页面布局与图表容器尺寸。

3. Flex 布局:最常用的现代布局

给容器设置 display:flex 后,其子元素会自动沿主轴排列,配合 justify-content(主轴对齐)、align-items(交叉轴对齐)、gap(间距)即可快速完成常见布局——可视化大屏的多图表排列正是它的典型应用。

.screen { display: flex; flex-wrap: wrap; gap: 12px; } .screen .chart-box { flex: 1; min-width: 300px; height: 240px; }
4. 常用文字与颜色属性
/* 颜色三种写法:关键字 / 十六进制 / rgb() */ p { color: red; } /* 关键字(少用) */ h1 { color: #00e5a8; } /* 十六进制(最常用) */ .box { background: rgba(0,229,168,.2); } /* rgba:带透明度 */ /* 文字常用属性 */ .title { font-size: 20px; font-weight: 700; text-align: center; } /* 高频速记:background 背景、border 边框、padding 内边距、 margin 外边距、width/height 宽高、border-radius 圆角 */
5. display:元素的三种形态
display 值效果典型元素
block块级:独占一行、可设宽高div、p、h1~h6
inline行内:不换行、宽高由内容决定span、a、b、i
inline-block既同行排列、又可设宽高img、button
flex弹性布局:子元素自动排列、可换行大屏容器、卡片容器
课堂提示:“flex:1”表示子项按比例瓜分剩余空间;大屏布局 = 一个 flex(或 grid)容器 + 若干设置了宽高的图表容器。

三、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. 函数:两种写法
// 方式一:function 声明(老式、通用) function sum(a, b) { return a + b; } // 方式二:箭头函数(ES6 新式、简洁,现代代码常用) const sum = (a, b) => a + b; // ECharts 回调中也常见箭头函数: data.map(item => item.value)
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 循环
// 条件判断 const value = 651; if (value > 500) { console.log('销量不错!'); } else { console.log('销量偏低'); } // 循环遍历:求和(处理图表数据时经常要累加) let total = 0; for (let i = 0; i < sales.length; i++) { total += sales[i]; } // 更推荐 for...of(直接拿到值,不用管下标) for (const item of sales) { total += item; }
6. 对象:图表数据的基本单元
const item = { name: '项链', value: 651, ratio: 0.18 }; item.name // 读取:'项链'(用 . 访问属性) item['value'] // 读取:651(用 [ ] 访问,等价写法) item.value = 700 // 修改属性 item.unit = '件' // 新增属性 // ECharts 饼图 / 柱状图的 data 里,每一个元素就是这样的对象
7. 模板字符串(ES6)
const name = '项链'; const count = 651; // 用反引号 + ${} 拼接,比 + 号更清晰 console.log(`${name} 的销量是 ${count} 件`);

四、DOM 操作与事件:让页面“动”起来

DOM(Document Object Model,文档对象模型)把网页结构组织成一棵“节点树”。JS 通过 DOM API 找到节点、修改节点,页面就会实时变化。

1. 获取元素
document.getElementById('chart') // 按 id 获取(最常用) document.querySelector('.box') // 按 CSS 选择器获取第一个 document.querySelectorAll('.box') // 获取所有匹配元素(类数组) document.querySelector('#chart div') // 后代选择器
2. 修改内容与样式
el.textContent = '新文字'; // 修改文本(安全,推荐) el.innerHTML = '<b>新内容</b>'; // 修改 HTML(可插入标签) el.style.color = '#00e5a8'; // 修改行内样式 el.classList.add('active'); // 添加 CSS 类 el.classList.remove('active'); // 移除 CSS 类
3. 事件监听
btn.addEventListener('click', function(){ // 点击按钮后执行的代码 chart.setOption({ ... }); // 甚至可以更新图表! });
4. 动态创建与删除元素
// 创建一个 li,放进 ul(常用于动态生成图表数据列表) const li = document.createElement('li'); li.textContent = '项链:651 件'; list.appendChild(li); // 删除元素(两种写法) li.remove(); // 方式一:自己删除自己(现代推荐) list.removeChild(li); // 方式二:父元素删除子元素
5. 事件对象 e:拿到“谁触发了事件”
btn.addEventListener('click', function (e) { e.target.textContent = '点击成功'; // e.target:被点击的那个元素 console.log(e.type); // 事件类型:'click' });
与 ECharts 衔接:ECharts 也基于 DOM 事件——chart.on('click', ...) 响应图表点击,chart.on('mouseover', ...) 响应悬停。事件机制正是项目四的重点内容。

五、JSON 与数据处理:图表的数据之源

JSON(JavaScript Object Notation,对象表示法)是一种轻量级数据交换格式,由键值对数组嵌套组成。服务器返回的数据、本地数据文件,大多都是 JSON。

1. JSON 的基本形态
// 对象:花括号包裹,键必须用双引号 { "name": "项链", "value": 651 } // 数组:方括号包裹,元素可以是对象 [ { "name": "项链", "value": 651 }, { "name": "手链", "value": 778 } ]
2. 两个关键方法
// 字符串 → 对象(从文件/接口拿到 JSON 文本后必用) const data = JSON.parse('{"name":"项链","value":651}'); // 对象 → 字符串(调试、存储时使用) const str = JSON.stringify(data);
3. JSON 与 ECharts 的无缝对接

教材中的图表数据常以 .json 文件存放,加载后只需一行 map 即可取出类目与数值:

// 假设从 data.json 加载到:sales = [{name:'项链',value:651}, ...] chart.setOption({ xAxis: { type: 'category', data: sales.map(d => d.name) }, series: [{ type: 'bar', data: sales.map(d => d.value) }] });
4. 嵌套 JSON:对象套数组、数组套对象
{ "shop": "乡村优选", "items": [ { "name": "项链", "value": 651 }, { "name": "手链", "value": 778 } ], "summary": { "total": 1429, "avg": 714.5 } } // 取值:一层一层往下 data.items[0].name // '项链' data.summary.total // 1429
5. 数据加工三连:取字段、筛选、排序
// 1) 取字段:改造成 ECharts 需要的结构 const names = data.items.map(d => d.name); // ['项链','手链'] const values = data.items.map(d => d.value); // [651, 778] // 2) 筛选:只要销量大于 500 的商品 const big = data.items.filter(d => d.value > 500); // 3) 排序:按销量从高到低(展开副本,不动原数组) const sorted = [...data.items].sort((a, b) => b.value - a.value);

六、异步与网络请求:数据的搬运工

浏览器向服务器请求数据需要“网络往返”,不能立即拿到结果。JavaScript 采用异步机制:先去做别的事,等数据返回后再执行后续代码。

1. 同步 vs 异步
类型行为示例
同步一行执行完才执行下一行,阻塞页面普通的加减乘除、数组遍历
异步发起请求后立即返回,结果就绪后通过回调处理加载图片、请求接口、定时器
2. Promise 与 fetch
// 现代标准写法:fetch 返回 Promise,then 接收结果 fetch('data/sales.json') .then(response => response.json()) // 把响应体解析为 JSON .then(data => { // data 就是 JSON 对象/数组 chart.setOption({ ... }); // 数据到手,渲染图表 }) .catch(error => console.error(error)); // 出错处理
3. 加载中的用户体验

请求期间页面应给出“加载中”反馈。ECharts 内置了 chart.showLoading()chart.hideLoading(),在异步加载前后调用,体验更完整。

4. async / await:更优雅的异步写法
// 把 fetch 链式写法改成“像同步一样”的写法: async function loadData() { chart.showLoading(); // 1. 显示加载中 const response = await fetch('data.json'); // 2. 等待响应(await) const data = await response.json(); // 3. 等待解析为 JSON chart.hideLoading(); // 4. 关闭加载动画 chart.setOption({ series: [{ data }] }); // 5. 渲染图表 } loadData(); // 函数要“被调用”才会开始执行
记不住也没关系:先记住“链式 .then 写法”能看懂项目五的项目源码即可;async/await 只是把同一件事写得更像同步代码,二选一都行。实际项目里两种写法都常见。
与课程衔接:项目五将深入“异步数据加载”,使用 $.get()(jQuery)或 fetch()(原生)从 JSON 文件读取数据并渲染大屏;项目六将全面使用 fetch。本节先建立概念即可。

实验任务六个递进任务 · 建议 8 学时

任务说明:按顺序完成,每个任务都可在浏览器中直接验证;建议使用 VS Code + Live Server 编写并运行自己的代码,先对照示例动手,再脱离示例独立完成。
搭建 HTML 页面骨架

新建 index.html,按标准结构书写:DOCTYPE、html、head(含 charset 与 title)、body。在 body 中放置一个 h1 标题和一个带 id 的 div 容器,设置宽高,浏览器打开验证显示。

要点:<!DOCTYPE html> 第一行;div 容器 id="chart" style="width:600px;height:400px"
CSS 美化与 Flex 布局

为页面添加样式:页面背景、标题颜色与居中;用 display:flex 排列三个卡片(内容自定),设置 gap 间距与 hover 变色效果。

要点:类选择器 .card、flex、gap、transition
JS 变量与函数练习

在 script 中定义一组城市订单量数组,用 map 计算“×2 后”的数组,用 filter 筛出大于 500 的值,用 reduce 求和,把结果分别输出到控制台(console.log)。

要点:const、数组方法 map/filter/reduce、console.log
DOM 交互:按钮控制内容

页面放一个标题元素和一个按钮,点击按钮后:修改标题文字、切换标题颜色(两种颜色来回切换)。再放一个“显示/隐藏”按钮控制一段说明文字的显隐。

要点:addEventListener、textContent、style、classList.toggle
JSON 数据渲染表格

定义一份商品销售数据的 JSON 数组(名称、销量),用 forEach 或 map 动态生成 table 行,把数据渲染成表格,并计算并显示总销量。

要点:JSON 数组、innerHTML 拼接、reduce 求和
综合练习:数据驱动的小页面

把任务 1–5 整合:HTML 骨架 + CSS 美化 + JS 处理一份 JSON 数据并渲染为卡片列表,页面上留一个“预留图表区域”(宽高固定的空 div)。完成即可进入项目一。

要点:三件套整合;预留 div 将在项目一中替换为 ECharts 图表

代码示例可直接在线运行与查看源码

课后习题

1. HTML 中为图表预留显示区域、最常用的“万能容器”标签是?
  • A. <div>
  • B. <span>
  • C. <p>
  • D. <h1>
答案:A div 是块级容器,可设置宽高,ECharts 的 init() 就传入一个 div 元素作为图表容器;span 是行内容器,p 是段落,h1 是标题。
2. 下列关于 CSS 的说法,正确的是?
  • A. 类选择器以 # 开头
  • B. 类选择器以英文句点(.)开头
  • C. id 选择器以英文句点(.)开头
  • D. 标签选择器以 # 开头
答案:B 类选择器用 .box,id 选择器用 #chart,标签选择器直接写标签名(如 p {})。
3. 在 JavaScript 中,声明一个“值不可再改变”的变量应使用?
  • A. var
  • B. let
  • C. const
  • D. static
答案:C const 声明的变量不可重新赋值,适合保存图表实例与配置对象;let 可重新赋值;var 是老式声明。
4. 将 JSON 字符串转换为 JavaScript 对象,应使用?
  • A. JSON.stringify()
  • B. JSON.parse()
  • C. Object.toString()
  • D. Array.from()
答案:B JSON.parse() 把 JSON 文本解析为对象/数组;JSON.stringify() 的作用相反,把对象转为字符串。
5. 下列哪种方式可异步获取服务器上的数据?
  • A. console.log()
  • B. document.write()
  • C. alert()
  • D. fetch()
答案:D fetch() 是现代浏览器内置的异步请求接口,返回 Promise,配合 then 处理返回的 JSON 数据。

操作题

制作“我的课程信息页”

用 HTML + CSS + JavaScript 完成一个课程信息页面:包含课程名称(标题)、课程简介(段落)、知识点列表(ul 列表);用 CSS 完成背景、居中与卡片美化;放置一个按钮,点击后切换简介文字的颜色(两种颜色交替)。

要求:独立编写,不使用框架;代码结构清晰,HTML / CSS / JS 三部分职责分明;浏览器中验证所有交互有效。

实训题

数据驱动的小型信息展示页

自选主题(如“家乡特产”“校园社团”“班级图书角”),定义一份 JSON 数组数据(不少于 5 条,每条含名称与数值),用 JavaScript 将数据渲染为卡片列表,并计算合计值显示在页面底部;同时预留一个宽高固定的空 div 并标注“图表预留区”。

要求:数据必须存于 JS 变量中的 JSON 结构;渲染逻辑用数组方法(forEach / map)实现;完成后思考:预留区如何替换为 ECharts 图表?
项目一

进入数据可视化世界

可视化概念 · 流程 · 工具 · ECharts 图表认识 · ECharts 与 Web 的关系
理论 2 学时实验 2 学时入门基础

项目概述

项目描述

某渔业销售公司希望直观了解各类水产品的销售构成,以便优化进货结构。本项目以此为切入点,带领大家认识什么是数据可视化、可视化工作的完整流程,并搭建 ECharts 开发环境,绘制出第一个图表——渔业销售数量占比饼图。

学习目标

  • 掌握数据可视化的基本概念及其在数据分析中的作用(识别模式、分析关系、检测异常)
  • 掌握数据可视化流程的五个步骤:需求分析 → 数据获取 → 数据预处理 → 数据分析与可视化 → 分析报告
  • 了解常用的数据可视化工具(ECharts、Python、D3、FineBI、Power BI)及选择依据
  • 认识常见的 ECharts 图表类型及其适用场景
  • 了解ECharts 与 Web 的关系,理解图表在网页中的渲染原理

理论要点五大知识模块

数据可视化概念一种综合技术,通过图形和图像直观展现数据间的量级关系,涉及计算机视觉、计算机图形学等多个领域。
数据可视化流程需求分析 → 数据获取 → 数据预处理 → 数据分析与可视化 → 分析报告,五步环环相扣。
常用可视化工具ECharts、Python、D3、FineBI、Power BI——各有特点,按实际需求选择。
常见 ECharts 图表bar、line、pie、scatter 四大系列及其变体,另有漏斗图、雷达图、词云图、仪表盘等。
ECharts 与 Web 的关系ECharts 是基于 JavaScript 的开源可视化库,通过 <script> 标签引入,图表渲染在 HTML 元素(通常是 div)中。

知识点详解结合课件展开 · 点击标题展开/收起

一、什么是数据可视化

数据可视化是一种综合技术,通过图形和图像直观展现数据间的量级关系,涉及计算机视觉、计算机辅助设计、计算机图形学等多个领域。其本质在于研究多维度视角下的数据图像表现形式,旨在表示数据、处理数据以及进行决策分析。

数据为可视化提供了价值,可视化则为数据赋予了意义,二者互为补充。数据可视化在数据分析中的三大典型作用:

1. 识别模式

辅助识别数据中的重复性模式,例如趋势、季节性变化、周期性波动等。如股票价格走势图展示日常模式,时间序列折线图揭示季节性规律;直方图可显示数据的分布形状,帮助了解中心趋势和离散程度。

2. 分析关系

利用散点图、线图、热力图和散布矩阵等,直观理解变量间的相关性或关联,发现数据中隐藏的因果关系和趋势。网络图可展示复杂系统中不同元素间的连接和关系,常用于社交网络分析、交通路线规划等。

3. 检测异常

通过分布图、箱线图或直方图等,识别出与正常模式明显不同的数据点(离群点),有助于及时发现潜在问题,例如欺诈交易识别、设备故障检测等。

二、数据可视化流程

数据可视化流程是一个系统化的步骤,从需求分析到分析报告,每一步都至关重要:

阶段核心任务要点
① 需求分析流程的起始步骤。通过充分的沟通与讨论,理解用户的需求和目标,明确分析目的、关键指标和问题,并与需求方达成一致。重点:充分沟通;成果指导后续所有环节
② 数据获取依据需求分析结果收集原始数据。途径分直接获取(一手数据:业务记录、调查结果、实验数据)与间接获取(二手数据:权威机构提供)。形式包括 Excel、CSV、Web 数据、数据库数据等。考虑数据的完整性、准确性和可用性
③ 数据预处理数据清洗、转换和整理:数据合并(整合多张关联表格)、数据清洗(剔除重复、缺失、异常、不一致数据)、数据标准化(消除量纲差异)、数据变换(离散化、哑变量处理等)。各步骤相互交织,无固定顺序,需灵活处理
④ 数据分析与可视化流程的核心。将抽象信息转化为具体图形。可视化方法包括对比分析、结构分析、相关性分析、统计分析等;图表类型取决于分析目的和数据类型。图表选择 = 分析目的 + 数据类型
⑤ 分析报告对分析和可视化结果的总结和解释,提取关键见解,回答需求分析阶段确定的问题,为业务改进、产品设计、市场策略提供结论和建议。传达数据的含义和价值,辅助决策
案例:农村电商“销售数据分析”五步走
① 需求分析:老板问 → “哪个品类最好卖?各渠道差距多大?” ② 数据获取:导出订单表 order.csv(含品类、渠道、销量字段) ③ 数据预处理:去重、补缺失值、统一单位 ④ 分析与可视化(选对图,结论自然清晰): 品类销量对比 → 柱状图 bar 销量月度趋势 → 折线图 line 各渠道占比 → 饼图 pie 销售额与利润关系 → 散点图 scatter ⑤ 分析报告:结论 + 图表 + 建议(如“加大线上渠道投入”)
一句话总结:精准需求 + 优质数据 + 专业可视化 = 一份能支撑决策的分析报告。

三、常见的数据可视化工具

工具特点适用场景
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 增强了数据表达力,为用户提供直观、互动的数据分析界面。

<!-- 在网页中使用 ECharts 的最小结构 --> <script src="js/echarts.js"></script> <div id="main" style="width:800px;height:500px"></div> <script> var myChart = echarts.init(document.getElementById('main')); myChart.setOption({ /* 配置项 */ }); </script>

实验任务开发环境搭建 · 2 学时

安装开发工具

安装 Visual Studio Code(推荐)或 HBuilder 等代码编辑器,安装中文语言包与 Live Server 插件,熟悉新建文件、保存、打开文件夹等基本操作。

安装浏览器

安装 Chrome 或 Edge 浏览器,按 F12 打开开发者工具,认识 Console(控制台)面板——调试 JavaScript 代码与查看报错信息的主要场所。

获取 ECharts

方式一:从官网下载 echarts.js 到本地(推荐教学使用);方式二:使用 CDN 引入;方式三:npm 安装。本地引入不依赖网络,运行更稳定。

获取地址:echarts.apache.org →「下载」→ dist 目录下的 echarts.min.js / echarts.js
创建渔业销售数量的 ECharts 项目

新建项目文件夹 EchartsTest,建立目录结构:根目录放置 Welcome.html,js 子目录存放 echarts.js,用 Live Server 打开验证环境可用。

EchartsTest/ ├─ Welcome.html └─ js/ └─ echarts.js
创建基础饼图分析渔业销售数量占比

按“引入 ECharts → 准备 DOM 容器 → init 初始化 → setOption 渲染”四步法,绘制渔业销售数量占比饼图(参考下方代码示例),保存并截图提交。

代码示例3 个在线图表:饼图看占比 · 柱状比大小 · 折线看趋势

课后习题

1. 数据可视化在数据分析中的一个重要作用是什么?
  • A. 提高数据存储容量
  • B. 识别数据中的重复性模式
  • C. 增强网络安全性
  • D. 加快数据传输速度
答案:B 数据可视化能有效地辅助识别数据中的重复性模式,例如趋势、季节性变化、周期性波动等,这是其在数据分析中的直接作用之一。
2. 数据可视化流程中的核心步骤是?
  • A. 数据存储
  • B. 数据获取
  • C. 数据分析与可视化
  • D. 网络安全性检查
答案:C “数据分析与可视化是数据可视化流程的核心”。数据获取虽是重要一步,但它是为分析提供数据基础,并非核心步骤。
3. 下列关于 ECharts 特点的描述,正确的是?
  • A. 仅支持基本的图表类型
  • B. 需要付费使用
  • C. 拥有健康且活跃的开源社区
  • D. 只能在特定的操作系统上运行
答案:C ECharts 提供二十多种图表和十几种组件,是免费开源项目,拥有健康且活跃的开源社区,社区成员贡献了众多第三方插件。
4. 主要用于展示不同类目数据在总和中的占比的图表是?
  • A. 柱状图
  • B. 折线图
  • C. 饼图
  • D. 散点图
答案:C 饼图通过每个扇区的弧度表示数据数量的比例,直观展示各部分与整体的关系;柱状图比较类别大小,折线图展示变化趋势,散点图展示变量间关系。
5. 适用于展示数据在各个阶段的变化和转化情况的图表是?
  • A. 柱状图
  • B. 漏斗图
  • C. 雷达图
  • D. 矩形树图
答案:B 漏斗图能够清晰地显示从初始阶段到最终阶段的数据流失或转化情况,适用于业务流程比较规范、周期长、环节多的流程分析。

操作题

绘制全国淡水养殖面积占比饼图

使用 ECharts 绘制基础饼图,展示全国淡水养殖面积占比情况。

数据:池塘养殖面积 2624、水库养殖面积 1425、湖泊养殖面积 719、河流养殖面积 149。
要求:新建 HTML 文件,本地引入 echarts.js,主标题“全国淡水养殖面积占比情况”居中显示,扇区标签显示名称与数值。

实训题

农村电商数据可视化方案设计

选择一个你熟悉的农村电商数据场景(如家乡特产网络销量、村级快递网点业务量、直播间观众构成等),按数据可视化流程完整走一遍:写出需求分析(要回答什么问题)、数据来源与获取方式、预处理要点、拟采用的图表类型及理由,最后输出一页图文并茂的分析报告(图表可用手绘草图)。

提交物:分析报告 1 份(Word / PDF),包含五个流程阶段的完整描述。
项目二

农村电商发展趋势分析

ECharts 基础架构 · 常用术语 · 网格与坐标轴 · 标题图例 · 柱状图/面积图/瀑布图/折线图
理论 4 学时实验 6 学时基础图表

项目概述

项目描述

近年来农村电商蓬勃发展,快递业务量、农村网络零售额持续攀升。本项目围绕“农村电商发展趋势”主题,系统学习 ECharts 的基础架构与常用术语,掌握直角坐标系下网格、坐标轴、标题、图例四大基础组件,并用柱状图、堆叠面积图、瀑布图、折线图呈现农村电商的发展趋势。

学习目标

  • 认识 ECharts 官方文档(使用手册、API、配置项手册)
  • 了解 ECharts 的基础架构(ZRender、组件模块、图类模块、接口模块)
  • 熟悉 ECharts 常用术语:常用图表名组件名及其英文写法
  • 掌握直角坐标系下网格组件和坐标轴组件的使用方法
  • 掌握标题组件和图例组件的使用方法
  • 掌握柱状图、堆叠面积图、瀑布图、折线图的绘制,并能从图形中提炼结论
案例背景数据:2016 年 12 月至 2021 年 12 月,我国农村地区互联网普及率从约 30% 持续攀升至接近 60%;全国快递业务量从 2018 年的 507.1 亿件增长至 2022 年的 1105.8 亿件——农村电商的“网络基础”与“物流基础”双双夯实。

理论要点

ECharts 官方文档“特性”“使用手册”“API”“配置项手册”构成掌握 ECharts 的关键知识体系,导航区支持模糊查询。
ECharts 基础架构基于轻量级 Canvas 类库 ZRender,由组件、图类、接口三个核心模块构建高效灵活的可视化框架。
常用术语·图表名series.type 决定图表类型:line、bar、pie、scatter、funnel、radar、gauge、treemap 等 20 余种。
常用术语·组件名title、legend、grid、xAxis、yAxis、tooltip、toolbox 等,组件是构成图表的基本元素。
网格与坐标轴grid 定义绘图区域位置大小;xAxis/yAxis 支持类目轴、数值轴、时间轴、对数轴,控制数据到图表空间的映射。
标题与图例title 展示主/副标题;legend 展示系列标识,点击可控制系列显示隐藏,支持多个图例与滚动模式。

知识点详解结合课件展开 · 点击标题展开/收起

一、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树图,展示树形结构各节点的层级关系
candlestickK 线图,展示股票、期货等价格走势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 可将刻度标签纳入网格计算,避免标签溢出容器。

grid: { left: 60, top: 40, right: 30, bottom: 40, // 绘图区四边距 containLabel: true, // 把坐标轴标签算进绘图区(常用) borderColor: '#3d8bff' // 网格边框(调试布局时常用) } // 多个网格并存(双图对比): // grid: [{ left: 60, top: 60 }, { left: 60, bottom: 60 }]

六、直角坐标系下的坐标轴组件(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 等)
xAxis: { type: 'category', // 类目轴 name: '年份', data: ['2018年', '2019年', '2020年', '2021年', '2022年'], axisTick: { alignWithLabel: true } // 刻度线与标签对齐 }, yAxis: { type: 'value', // 数值轴 name: '业务量(亿件)' }

七、标题组件(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数值 / 数组标题内边距;主副标题之间的间距
title: { text: '农村电商发展趋势分析', // 主标题 subtext: '2018—2022 年', // 副标题 left: 'center', // 水平居中 textStyle: { fontSize: 18, fontWeight: 'bold' }, subtextStyle: { color: '#999' } }

八、图例组件(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 对应
legend: { data: ['生鲜', '粮油', '服饰'], // 与各系列 name 一一对应 orient: 'horizontal', // 水平排列 left: 'center', top: 8 // 位置:水平居中、贴近顶部 } // 多个图例:legend: [{ data: ['生鲜'] }, { data: ['粮油'] }] // 点击图例项 = 控制对应系列的显示 / 隐藏(默认就有这个交互)
注意:图例的 data 数组项须与对应系列的 name 一致,否则图例无法正确关联系列。

实验任务6 学时 · 由组件到图表逐步进阶

绘制直角坐标系下的网格

新建 HTML 页面,配置 grid 组件的 left、top、right、bottom、width、height 属性,观察绘图区域位置与大小的变化,理解 containLabel 的作用。

绘制直角坐标系下的坐标轴

配置 xAxis(type: 'category',类目数据)与 yAxis(type: 'value',轴名称),设置刻度对齐、轴线显示等样式,建立规范的直角坐标系。

添加标题组件

为主图表添加主标题与副标题,设置位置(left / top)、对齐方式与文字样式,体会标题对图表主题表达的支撑作用。

添加图例组件

为多系列图表添加图例,练习 orient 布局朝向与位置设置,点击图例项验证系列的显示与隐藏交互。

绘制基础柱状图分析全国快递业务量

以 2018—2022 年全国快递业务量数据绘制柱状图,体会柱形高度对数值大小的直观表达。

数据(亿件):2018 年 507.1、2019 年 635.2、2020 年 833.6、2021 年 1083.0、2022 年 1105.8。数据来源:《中国电子商务报告(2022)》。
绘制堆叠面积图分析主要农产品生产总量

以粮食、蔬菜、水果、水产品四个系列绘制堆叠面积图(series 中 stack 属性设为相同值),分析总量与结构的变化。

绘制瀑布图分析电商平台数量

用“透明辅助系列 + 数值系列”的堆叠技巧绘制瀑布图,展示各年度平台数量的增减变化。

绘制基础折线图分析农村电商零售额

绘制折线图展示农村网络零售额逐年增长趋势,练习 smooth 平滑曲线与 areaStyle 面积填充。

绘制堆叠柱状图分析多品类零售额占比

将多品类零售额堆叠展示,比较各品类在总量中的占比结构,完成后撰写一份数据结论。

代码示例4 个在线可运行图表 · 点击“查看源码”学习配置

课后习题

1. ECharts 官方文档中,为初学者提供快速上手教程(获取、引入、创建第一个图表)的部分是?
  • A. 特性
  • B. 使用手册
  • C. API
  • D. 配置项手册
答案:B “使用手册”中的“入门篇”包含 ECharts 的获取、引入和创建第一个图表的基本步骤,是初学者快速上手的关键内容;API 和配置项手册主要用于查阅。
2. ECharts 架构体系中的三个核心模块是?
  • A. 组件模块、图类模块和数据模块
  • B. 组件模块、图类模块和接口模块
  • C. 组件模块、接口模块和渲染模块
  • D. 图类模块、接口模块和交互模块
答案:B ECharts 基于轻量级 Canvas 类库 ZRender,由组件、图类和接口三个核心模块构建。组件模块专注于增强图表的交互性和个性化功能。
3. 下列图表类型中,用于展示多个时间序列数据变化趋势的是?
  • A. radar
  • B. funnel
  • C. themeRiver
  • D. gauge
答案:C 主题河流图(themeRiver)用于展示多个时间序列数据的变化趋势;雷达图表现多变量数据,漏斗图展示转化与流失,仪表盘展现关键指标。
4. 用于设置坐标轴名称的文字样式的属性是?
  • A. xAxis.name
  • B. xAxis.nameLocation
  • C. xAxis.textStyle
  • D. xAxis.nameTextStyle
答案:D xAxis.nameTextStyle 用于设置坐标轴名称的文字样式;xAxis.name 是名称文本本身,nameLocation 是名称显示位置。
5. 用于设置图例组件的布局朝向的属性是?
  • A. legend.orient
  • B. legend.left
  • C. legend.top
  • D. legend.type
答案:A legend.orient 设置图例列表的布局朝向(horizontal / vertical);legend.type 设置图例类型(plain / scroll)。

操作题

绘制 9 月和 10 月部分蔬菜价格对比图

某农贸市场记录了 12 种蔬菜两个月的价格,请绘制柱状图进行对比。

要求:① 添加主标题“9月和10月部分蔬菜价格”并居中;② 图例数据显示“9月”“10月”两个系列,位于顶部;③ X 轴类目为蔬菜品种(菠菜、生菜、油菜、黄瓜、青椒、大葱、大白菜、西葫芦、尖椒、白萝卜、豆角、芹菜),刻度线朝内且与标签对齐;④ Y 轴名称为“元/公斤”。

实训题

农村电商发展趋势可视化小报告

综合运用本项目的网格、坐标轴、标题、图例组件,在一个页面中完成两张图表:① 全国快递业务量柱状图;② 农村网络零售额折线图。为每张图表撰写 3~5 句数据分析结论(趋势描述、拐点识别、原因推测),并将页面与结论一并提交。

提交物:完整 HTML 文件 + 结论文字。图表须正确显示标题、图例、坐标轴名称。
项目三

农村电商销售趋势分析

工具栏 · 提示框 · 标记点 · 标记线 · 饼图/圆环图/玫瑰图/散点图/漏斗图
理论 4 学时实验 8 学时交互增强

项目概述

项目描述

销售趋势是农村电商运营的核心关注点。本项目在趋势分析的基础上,为图表添加工具栏、提示框、标记点、标记线四大交互增强组件,并学习饼图、圆环图、南丁格尔玫瑰图、散点图、漏斗图等占比与转化类图表,全面呈现“哪些商品好卖、订单从哪里来、转化到哪一步流失”等销售洞察。

学习目标

  • 掌握工具栏组件(toolbox)的使用方法:保存图片、数据视图、数据区域缩放、动态类型切换等
  • 掌握提示框组件(tooltip)的使用方法:触发方式、显示格式、样式定制
  • 掌握标记点组件(markPoint)的使用方法:突出最大值、最小值与自定义标记
  • 掌握标记线组件(markLine)的使用方法:平均值线、自定义标线
  • 掌握饼图、圆环图、玫瑰图、散点图、漏斗图的绘制与适用场景

理论要点

工具栏组件 toolbox提供对图表的交互操作功能:导出图片、数据视图、数据区域缩放、动态类型切换、还原等。
提示框组件 tooltip展示图表数据的详细信息,支持 item / axis 触发方式与 formatter 自定义显示格式。
标记点组件 markPoint在图表上标记突出数据:最大值、最小值或用 coord 指定位置的任意数据点。
标记线组件 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 等背景颜色、边框颜色 / 宽度、文字样式等外观配置
tooltip: { trigger: 'axis', formatter: '{b}:{c} 亿元' // 模板变量:a 系列名、b 类目名、c 数值 }

三、标记点组件(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布尔 / 对象标记点及其动画配置
markPoint: { data: [ { type: 'max', name: '最大值' }, { type: 'min', name: '最小值' }, { coord: ['榴莲', 128.6], name: '增速第一', value: '同比 +128.6%' } ] }

四、标记线组件(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数值 / 函数标线动画时长,支持回调函数
markLine: { data: [ { type: 'average', name: '平均值' }, // 平均值线 { yAxis: 110, name: '目标线', // 自定义阈值线 lineStyle: { color: '#c0504d', type: 'dashed' } } ] }

五、饼图与圆环图

饼图主要用于展示不同类目数据在总和中的占比,每个扇区的弧度表示数据数量的比例。圆环图通过将 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\'),能够更有效地传达数据的层次和重要性。在数据差异较大的情况下,玫瑰图比普通饼图更能突出对比效果,适用于需要强调数据相对大小的场景,如各省份快递包裹数量对比。

series: [{ type: 'pie', roseType: 'radius', // 半径玫瑰图 itemStyle: { borderRadius: 6 }, data: [...] }]

七、散点图与气泡图

散点图由多个“点”组成,直观观察数据的变化趋势与分布特征。数据格式为二维数组 [[x1, y1], [x2, y2], …]气泡图是特殊的散点图,通过 symbolSize 把第三个维度映射到气泡大小(配合 visualMap 还可映射颜色),从而在二维平面上展示三个变量的关系。

series: [{ type: 'scatter', data: [[85.2, 12.6], [62.4, 9.8], …], symbolSize: function (data) { return data[1] * 4; // 气泡大小随份额变化 } }]

多系列散点图可在同一坐标系中绘制不同系列的点集,展示多组数据之间的关系和分布特征,适用于揭示数据集群、趋势以及不同变量间的相关性。

八、漏斗图

漏斗图通过连续阶段构成类似漏斗的形状,清晰展示数据在各个阶段的变化和转化情况,适用于业务流程比较规范、周期长、环节多的流程分析

参数说明
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 组在线可运行图表

课后习题

1. 下列关于 toolbox.feature 的描述,正确的是?
  • A. 用于设置工具栏的显示和隐藏
  • B. 是对象类型、各工具配置项,除了内置工具按钮外还可以自定义工具按钮
  • C. 只能使用内置的工具按钮
  • D. 直接决定工具栏组件的大小
答案:B toolbox.feature 是对象类型、各工具配置项,可选属性有 saveAsImage、restore、dataView、dataZoom、magicType、brush,还可以自定义工具按钮。A 是 toolbox.show;工具栏大小由 toolbox.width / height 决定。
2. 下列关于提示框组件的描述,正确的是?
  • A. trigger 设置为 axis 主要适用于饼图
  • B. tooltip.showContent 表示是否显示提示框浮层,默认显示
  • C. renderMode 默认为 json
  • D. confine 设置为 false 是为了将 tooltip 限制在图表区域内
答案:B 只需触发事件或显示 axisPointer 而不需要显示内容时才将 showContent 配置为 false。axis 触发主要适用于柱状图、折线图等类目轴图表;renderMode 默认为 html;confine 设置为 true 才是限制在图表区域内。
3. 关于标记点组件(markPoint),下列描述正确的是?
  • A. symbol 的默认值是 arrow
  • B. symbolSize 的数组表示 [高, 宽]
  • C. 标注的位置可通过 coord 指定坐标等方式设定
  • D. symbolSize 默认值为 100
答案:C 标记点位置可用 type: 'max'/'min'、coord 指定坐标、像素位置三种方式指定;symbol 默认值为 pin,symbolSize 数组表示 [宽, 高]。
4. series-line.markLine.precision 表示?
  • A. 标线是否静默交互,默认为 true
  • B. 标点大小,可像一般 symbolSize 那样通过数组分别指定高宽
  • C. 标线数值的精度,在显示平均值线的时候有用
  • D. 动画时长,不支持回调函数
答案:C precision 表示标线数值的精度。silent 默认为 false;markLine 的 symbolSize 不能通过数组分别指定高宽;animationDuration 支持回调函数。
5. 下列关于漏斗图的说法,正确的是?
  • A. 漏斗图通过设置 type 属性为 pyramid 来绘制
  • B. 多个漏斗图共存时只需在系列配置中定义一个对象
  • C. 设置 sort 属性为 descending 实现的是金字塔型
  • D. 金字塔型与漏斗型的区别在于数据项的排序方式,通过设置 sort 属性为 ascending 实现金字塔型
答案:D 漏斗图通过 type: \'funnel\' 绘制;多个漏斗图共存需定义多个系列对象;descending(默认)实现漏斗型,ascending 实现金字塔型。

操作题

为水果同比增长率图表添加完整交互组件

基于“销售前十的水果同比增长率”折线图,为图表添加四大交互组件并截图对比效果。

要求:① 工具栏含导出图片、数据视图、数据区域缩放三个按钮;② 提示框 trigger 设为 axis;③ 标记点标出最大值与最小值;④ 标记线绘制平均值线(虚线);⑤ 每完成一项组件保存一张截图,注明组件名称与关键配置项。

实训题

农村电商销售转化全链路分析

某农村电商平台记录了完整销售链路数据:浏览商品 10000 人次 → 加入购物车 4200 → 提交订单 2600 → 完成支付 2150 → 分享评价 980。请完成:① 用漏斗图展示各环节转化情况,标注每环节转化率;② 计算整体转化率并定位流失最严重的环节,提出至少两条优化建议;③ 用圆环图展示订单来源(直播带货 34.5%、平台商城 28.2%、社区团购 18.6%、微信社群 12.4%、其他 6.3%)。

提交物:HTML 页面(两张图表)+ 分析结论文档。
项目四

农村电商用户行为分析

鼠标事件 · 行为事件 · 雷达图 / 矩形树图 / 嵌套饼图 / 词云图 / 仪表盘
理论 4 学时实验 6 学时交互进阶

项目概述

项目描述

用户行为数据是电商平台的“指南针”。本项目围绕“用户在买什么、怎么买、满意不满意”三个问题,先学习鼠标事件行为事件两类交互机制——让图表“听懂”用户操作、主动控制图表状态;再掌握雷达图、矩形树图、带时间轴的折线图、嵌套饼图、词云图、仪表盘六类图表,从购买喜好、地域分布、活跃度、品类偏好、评论情感、满意度六个维度完成用户行为分析。

学习目标

  • 掌握鼠标事件的类型与触发机制(click、dblclick、mouseover、mouseout、mousemove、contextmenu 等)
  • 掌握通过 on() 绑定事件监听,利用 params 事件对象实现交互反馈
  • 掌握行为事件(action.highlight、action.downplay、action.select 等)及 dispatchAction() 触发方式
  • 掌握雷达图、矩形树图、词云图、仪表盘的绘制方法与适用场景
  • 掌握嵌套饼图的层级表达与数据区域缩放组件(dataZoom)的使用
  • 了解鼠标事件与行为事件的异同,能组合二者实现循环高亮等复杂交互
数据洞察:用户选择平台时最看重物流时效性(16.44%)、商品丰富程度(16.38%)与产品质量(15.49%);用户满意度得分为 82.7 分——物流与品质是农村电商赢得用户的两把钥匙。

理论要点

鼠标事件单击、双击、移入移出等交互方式触发的事件,由用户操作自动触发,通过 on() 注册监听。
行为事件特定交互动作下触发的预设功能(高亮、选中、图例切换等),由代码通过 dispatchAction() 主动触发。
params 事件对象事件回调的参数对象,包含 name、value、seriesType、dataIndex 等字段,是连接图表与业务逻辑的桥梁。
雷达图多维度数据对比利器,radar 组件定义指标轴(名称+最大值),每个系列表示一个对象的多维数据。
矩形树图与嵌套饼图矩形面积映射层级数值占比;嵌套饼图内环表主类、外环表子类,表达上下级逻辑。
词云图与仪表盘词语大小映射词频,适合评论分析与舆情监测;仪表盘用指针和刻度直观反映单一 KPI 指标状态。

知识点详解结合课件展开 · 点击标题展开/收起

一、鼠标事件

鼠标事件通过提供单击、双击以及鼠标移入移出等交互方式触发的一系列事件,使用户能够与图表进行交互、获取更多信息或执行特定操作,显著增强图表的互动体验。所有事件都通过 myChart.on(eventName, handler) 绑定,回调函数的 params 对象携带图表数据信息。

事件名称触发时机使用示例
click单击元素时查看数据详情
dblclick双击元素时跳转页面
mousedown / mouseup按下 / 释放鼠标按钮(左键、右键、中键)时自定义按压反馈
mouseover鼠标移入元素时高亮显示
mouseout鼠标移出元素时取消高亮
mousemove鼠标在元素上移动时提示框跟随
contextmenu右键菜单时自定义菜单
myChart.on('click', function (params) { // params:事件对象,常用字段如下 console.log(params.name); // 数据项名称 console.log(params.value); // 数据值 console.log(params.seriesType); // 系列类型 console.log(params.dataIndex); // 数据项索引 });

鼠标事件三要素:① 事件类型(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
myChart.dispatchAction({ type: 'highlight', // 行为事件类型 seriesIndex: 0, // 系列索引 dataIndex: 2 // 数据项索引 });

三、鼠标事件与行为事件的异同

两类事件是一体两面:鼠标事件负责监听用户行为,行为事件负责控制图表状态,组合使用可实现循环高亮等复杂交互。

维度鼠标事件行为事件
触发方式由用户操作自动触发需开发者用代码手动触发
用途定位监听用户行为控制图表状态变化
调用方式通过 on() 注册监听通过 dispatchAction() 触发
交互主动性被动响应用户主动发起控制

相似之处:① 都作用于图表元素(数据项、系列、图形区域);② 都可用于交互处理;③ 都能实现图表联动;④ 都可通过 dataIndexseriesIndex 等定位到具体的数据图形。

四、雷达图(radar)

雷达图是一种多维数据可视化图表,常用于展示不同类别的多维度数据,适合数据对比、分类问题(如地区、产品或人群偏好分析)。数据结构核心是指标轴数据系列:每一条轴线表示一个维度,每个数据系列表示一个对象的多维数据。

option = { radar: { // 雷达图坐标系组件 indicator: [ // 指标轴:每条轴一个维度 { name: '东北大米', max: 1000 }, { name: '软籽石榴', max: 1000 }, // …每个维度都可单独设置最大值 ], center: ['50%', '55%'] // 圆心位置 }, series: [{ type: 'radar', // 图表类型:雷达图 data: [ { value: [650, 410, …], name: '广东' }, { value: [560, 532, …], name: '上海' } ] }] };

案例分析要点:各地区用户购买偏好呈现显著地域特征——上海用户更偏爱购买柠檬,广东用户偏爱沃柑、红枸杞和砂糖橘,这与当地饮食习惯、文化背景及季节性因素有关。

五、矩形树图(treemap)

矩形树图用于展示层级结构数据:整个图形由一个大矩形划分为多个子矩形,每个矩形的面积由节点数值决定,支持多层嵌套(children),直观反映数据的层级关系与比例分布,适用于地区用户分布、市场份额比较、文件存储空间占比等场景。

配置项作用说明
series.data / children定义分层数据结构,支持多级嵌套
leafDepth控制初始展开的层级深度,常用于聚焦上层或下层数据
label设置标签是否显示、显示位置与格式,提升节点可读性
levels为不同层级设置样式(颜色、边框),强化视觉分层效果
itemStyle.borderWidth / borderColor矩形的边框宽度 / 边框颜色
tooltip鼠标悬停时显示节点名称、数值
series: [{ type: 'treemap', itemStyle: { borderWidth: 1, borderColor: '#fff' }, label: { show: true, fontSize: 16 }, data: [ { name: '广东', value: 2.4, // 第一层:省份 children: [ // 第二层:城市 { name: '广州市', value: 0.357 }, { name: '深圳市', value: 0.337 } // … ] } ] }]

六、带时间轴的折线图(dataZoom)

时间轴通过数据缩放组件 dataZoom 实现,提供交互式数据探索能力——用户可通过拖动或缩放时间范围,动态聚焦于特定时间段内的数据细节,兼具折线图的趋势表达与时间维度的动态展示,支持多个数据系列同时对比群体差异。

dataZoom: [ // 数据区域缩放组件 { type: 'inside', // 内置于坐标系中(滚轮/触摸缩放) start: 5, // 数据窗口范围的起始百分比 end: 15 // 结束百分比 }, { type: 'slider', // 滑块型缩放组件(底部拖动条) start: 0, end: 10 } ]

案例分析要点:25-34 岁和 35-49 岁年龄段用户活跃度整体较高,是平台的主要活跃群体;18-24 岁和 50-59 岁年龄段活跃度相对较低但呈一定波动性。

七、嵌套饼图

嵌套饼图由内环和外环组成,用于表达主类与子类之间的上下级逻辑(内环展示水果、肉类等大类,外环展示苹果、葡萄等具体品种),特别适用于市场调研、消费分析、分类结构等数据场景。实现方式是在同一 option 中定义两个饼图系列,通过不同的 radius 控制内外位置。

series: [ { // 内层:种类(大类) type: 'pie', radius: [0, '30%'], // 从圆心到 30% label: { position: 'inner' }, data: [ { value: 68059, name: '水果', selected: true }, { value: 39247, name: '肉类' } ] }, { // 外层:品种(子类) type: 'pie', radius: ['45%', '60%'], // 环形区 data: [ { value: 20050, name: '西瓜' }, { value: 17239, name: '柑橘' } ] } ]

数据分析要点:明确层级(大类进内环)、细化品种(子类进外环)、合理配色区分(不同颜色区分类别,增强层次感与辨识度)。

八、词云图(wordCloud,需插件)

词云图是基于文本数据的可视化图表,通过词语大小和颜色突出词频信息——频率越高字体越大,适合展示关键词的频率分布与重要程度,常用于用户评论分析、舆情监测、热点话题挖掘等。注意:词云图不是 ECharts 内置图表,需要额外引入 echarts-wordcloud 插件。

<!-- 第 1 步:先引入 ECharts,再引入词云插件 --> <script src="js/echarts.js"></script> <script src="js/echarts-wordcloud.min.js"></script> // 第 2 步:配置词云系列 series: [{ type: 'wordCloud', // 词云系列类型 sizeRange: [10, 50], // 词语大小的范围 rotationRange: [0, 90], // 词语旋转角度范围(2.x 插件) rotationStep: 45, // 旋转步进 gridSize: 4, // 词语之间的间距 data: [ // 数据格式:[{ name, value }] { name: '超赞', value: 1671 }, { name: '准时', value: 1544 } ] }]

形状词云图(拓展):普通词云图在方形或圆形区域内随机布局单词;形状词云图的单词布局受限于自定义图片形状——通过 maskImage 属性传入一个 Image 对象(如水果轮廓图),词语将沿形状填充排布。

案例分析要点:“超赞”“准时”“专业”“信任”“好吃”等正面词汇频率较高,用户普遍满意;也存在“不好”“不满意”等负面词,但频率明显更低。

九、仪表盘(gauge)

基础仪表盘通过指针和刻度展示单一数值的圆形仪表图,直观反映指标的当前状态,适合关键性能指标(KPI)的实时监控,应用场景包括用户满意度分析、设备运行状态监测、业务目标达成度评估等。

series: [{ name: '满意度', type: 'gauge', // 仪表盘系列类型 min: 0, // 最小值 max: 100, // 最大值(满意度满分 100) detail: { // 仪表盘详情(用于显示数值) formatter: '{value}' }, data: [ { value: 82.7, name: '得分' } ] }]
配置项作用说明
min / max仪表盘刻度的最小值与最大值
splitNumber仪表盘分割的段数(每 10 分一个大刻度即分割 10 段)
detail仪表盘详情,用于显示数值文本,formatter 支持模板变量 {value}
axisLine / axisLabel刻度轴线(可分区着色)与刻度标签
pointer / progress / anchor指针样式 / 进度条 / 锚点(进阶美化配置)

多标题仪表盘(拓展):与基础仪表盘的区别在于显示多个数据指标时,为每个指标配置独立的标题和详情——通过在 data 数组中为每个数据项定义 title.offsetCenterdetail.offsetCenter 分别设置标题和详情的位置,实现多指标布局。

实验任务6 学时 · 两类事件 + 六类图表

任务 4.1 绘制雷达图分析不同地区的用户购买喜好

以东北大米、软籽石榴、红枸杞等 10 种农产品为指标轴(max 均为 1000),绘制广东、上海、江苏、浙江、山东、四川 6 个地区的雷达图,tooltip 用 formatter 函数逐项显示指标值;用 click 事件输出点击的地区名。

任务 4.2 绘制矩形树图分析部分地区的用户分布

以广东(2.4 亿,含 21 个地市 children)、浙江(0.79 亿,含 11 个地市)、北京(0.302 亿)绘制矩形树图,设置 borderWidth、borderColor 与标签字号,观察广深佛莞的用户聚集。

任务 4.3 绘制带时间轴的折线图分析不同年龄段的用户活跃度

为 4 个年龄段的活跃度折线图配置 dataZoom(inside + slider 两种类型),拖动滑块聚焦 2019/10—2023/12 中的任意时间段,对比各年龄段差异。

任务 4.4 绘制嵌套饼图分析用户偏向的农产品

内环展示水果、肉类、蔬菜、水产四大类,外环展示西瓜、柑橘、鸡肉、辣椒等 16 个品种(radius 分别为 [0,'30%'] 与 ['45%','60%']),并用 dispatchAction 高亮第一个品种扇区。

任务 4.5 绘制词云图分析用户对产品或服务的评论

引入 echarts-wordcloud 插件,以 50 个评论关键词及词频绘制词云图(sizeRange [10,50]),悬停查看词频。拓展:用 maskImage 载入自定义形状图片,制作形状词云图。

任务 4.6 绘制基础仪表盘分析用户的满意度

以满意度得分 82.7 绘制仪表盘(min 0、max 100、每 10 分一个大刻度)。拓展:用 title/detail 的 offsetCenter 制作多标题仪表盘,同时展示多个指标。

代码示例7 组在线可运行图表

课后习题

1. 当用户在图表上释放鼠标按钮(左键、右键或中键)时触发的事件是?
  • A. mousedown
  • B. click
  • C. mouseup
  • D. mouseover
答案:C mouseup 在用户释放鼠标按钮(左键、右键或中键)时触发;mousedown 是按下时触发;click 是单击元素时触发;mouseover 是鼠标移入元素时触发。
2. 行为事件类型 action.select 表示?
  • A. 高亮指定的数据
  • B. 选中指定的数据,选中的数据会应用 select 配置的样式
  • C. 取消选中指定的数据
  • D. 切换选中与否的状态
答案:B action.select 选中指定的数据,选中的数据会应用 select 配置的样式。A 是 action.highlight;C 是 action.unselect;D 是 action.toggleSelect。
3. 在 ECharts 中,绘制雷达图时需要通过( )参数来设置雷达图的轴。
  • A. series
  • B. xAxis
  • C. radar
  • D. data
答案:C 雷达图通过 radar 参数定义坐标系组件,其 indicator 包含雷达图的多个轴(每条轴可定义一个指标),共同构成雷达图的多边形网格;series 定义系列数据,xAxis 用于直角坐标系 x 轴,data 提供具体数据点。
4. 在 ECharts 中,基础仪表盘是通过( )系列类型来实现的。
  • A. line
  • B. bar
  • C. gauge
  • D. pie
答案:C gauge 类型专为仪表盘设计,可以方便地设置最小值、最大值、刻度、指针等仪表盘特有的属性;line 绘制折线图,bar 绘制柱状图,pie 绘制饼图。
5. 矩形树图(treemap)的边框宽度是通过( )属性来定义的。
  • A. itemStyle.borderWidth
  • B. series.borderWidth
  • C. treemap.borderWidth
  • D. data.borderWidth
答案:A 矩形树图的边框宽度通过 itemStyle 对象中的 borderWidth 属性定义,设置在系列中的每个数据项里;series.borderWidth、treemap.borderWidth 并不是有效参数,data.borderWidth 也不是定义边框宽度的正确位置。

操作题

绘制不同城市等级冷冻生鲜购买率雷达图

以一线、新一线、二线、三线及以下城市在水果、肉类、蔬菜、水产、乳制品、粮油副食 6 个品类的冷冻生鲜购买率为指标,绘制可交互雷达图。

要求:① 指标轴 max 按各品类最大购买率设置;② 图例可点击切换城市显示;③ 用行为事件 dispatchAction 分别触发 legendSelect、legendAllSelect、legendUnSelect、legendUnSelectAll,观察图例状态变化;④ 为图表绑定 click 鼠标事件,在控制台输出被点击的城市与品类。

实训题

农产品电商用户行为综合分析

某农村电商平台收集了用户行为数据:① 各年龄段(18-24 / 25-34 / 35-49 / 50-59 岁)连续 12 个月的活跃度;② 用户评论关键词 30 个(含词频);③ 平台季度满意度得分 4 期;④ 用户购买农产品的品类偏好(4 大类 × 16 品种)。请综合运用本项目所学完成分析报告。

要求:① 带时间轴折线图展示活跃度并用 dataZoom 聚焦峰值月份;② 词云图展示评论关键词,区分正负面词频并给出情感倾向结论;③ 仪表盘展示最新满意度并标注等级分区;④ 嵌套饼图展示品类偏好,内环四大类、外环品种;⑤ 每张图表至少绑定一种鼠标事件增强交互;⑥ 输出 500 字以上的分析结论文档。
项目五

农村电商可视化大屏

主题 · 多图表联动 · 异步数据加载 · 可视化大屏
理论 6 学时实验 8 学时综合呈现

项目概述

项目描述

本项目把前四个项目学到的图表与交互能力"装进"一块可视化大屏:先学主题——用一套配色统一整体视觉风格;再学多图表联动——让柱状图与折线图共享悬停状态,趋势对比更直观;接着学异步数据加载——用 jQuery 的 $.get() 从 JSON 文件取数,实现"数据与图表分离";最后综合运用以上技术,搭建"某农村电商平台数据分析"可视化大屏,包含农村电商发展、销售分析、用户分析三个页签、20 余张图表。

学习目标

  • 掌握主题的下载、引入与使用,能调用 roma、shine、dark 等内置主题
  • 掌握主题切换的完整流程:dispose() 销毁旧实例 → init() 重新初始化 → setOption() 重绘
  • 掌握多图表联动的两种实现方式:指定 group ID 连接与实例数组连接,并能用 disconnect() 解除联动
  • 掌握异步数据加载:$.get() 获取 JSON 数据,配合 showLoading() / hideLoading() 显示加载动画
  • 掌握可视化大屏的页面结构(屏幕头部 + 网格布局)与深色风格实现,理解多图表页签拆分的思路
数据洞察:2019—2023 年主要肉类销售总量先降后升(合计 652.1 → 527.7 → 678.3 万吨),其中猪肉主导总量曲线,牛肉、羊肉稳步增长——把"柱状 + 折线"放在同一屏幕联动展示,回升拐点一目了然。

理论要点

主题(Theme)一组预定义的样式配置,决定图表配色、字体、背景等视觉风格,在 init() 时作为第二个参数传入即全局生效。
内置主题与自定义主题官方提供 roma、shine、dark 等内置主题;自定义主题用 registerTheme(name, themeObject) 注册后与内置主题用法一致。
dispose 与重新初始化切换主题时先 dispose() 销毁实例释放资源,再重新 init() 并 setOption(),图表才能以新主题重绘。
多图表联动设置 chart.group 为相同 ID 后调用 echarts.connect(groupID),或直接 echarts.connect([chart1, chart2]),共享 tooltip、选中等交互状态。
异步数据加载$.get(url).done(callback) 从 JSON 文件取数后调用 setOption() 渲染;加载期间用 showLoading() / hideLoading() 提示用户等待。
可视化大屏深色背景 + 屏幕头部标题 + CSS 网格布局的多图表组合,是数据可视化分析结果的综合呈现形态。

知识点详解结合课件展开 · 点击标题展开/收起

一、主题:统一图表的视觉风格

主题是什么?主题是一组预定义的样式配置(配色、字体、背景、轴线、图例等)。把主题名传给 echarts.init(dom, themeName) 的第二个参数后,整个图表自动按该风格渲染,无需逐项配置颜色。

主题的使用步骤
下载主题文件

从 ECharts 官网主题编辑器下载 roma.jsshine.js 等主题文件,或在线定制后生成 customed.js 自定义主题。

引入主题文件

在页面中通过 <script src="js/roma.js"></script> 引入——主题文件内部会自动调用 registerTheme() 完成注册。

初始化时指定主题

echarts.init(document.getElementById('main'), 'roma'),第二个参数传入主题名。

运行时切换主题

myChart.dispose() 销毁实例,再重新 init()setOption() 重绘。

注意:ECharts 5 的 CDN 版只内置 default 主题,dark、roma 等需单独引入 js 文件。本站在线示例使用 echarts.registerTheme('roma', {...}) 直接在代码内注册主题对象演示该机制,效果与引入主题文件一致。

二、多图表联动:让两个图表"心有灵犀"

什么是联动?当两张图表使用同一组类目轴数据(如"主要肉类销售总量"的柱状图与折线图)时,联动让鼠标在任意图表上悬停,另一张图同步显示对应年份的指示器与提示框,便于对比趋势。

方式一:指定 group ID(适合多图表)
<script> // 为每个实例设置相同的 group ID chart1.group = 'group1'; chart2.group = 'group1'; echarts.connect('group1'); // 按组 ID 连接 echarts.disconnect('group1'); // 解除该组的联动 </script>
方式二:实例数组(适合少量图表)
<script> var charts = [chart1, chart2]; echarts.connect(charts); // 直接传入实例数组 echarts.disconnect(charts); // 解除数组内实例的联动 </script>

注意:联动依赖各图表的横轴数据一致(同为类目轴且类目相同),否则指示器位置无法对齐。

三、异步数据加载:让图表"随时更新"

为什么需要异步加载?真实业务中数据持续变化,把数据写死在 JS 里无法更新。将数据保存为 JSON 文件,页面加载后再异步请求数据渲染图表,实现"数据与图表分离、改数据不改代码"。

jQuery 异步取数写法
<script src="js/jquery.min.js"></script> <script> var myChart = echarts.init(document.getElementById('main')); myChart.showLoading(); // 请求前显示加载动画 $.get('data/sale.json').done(function (jsonData) { myChart.hideLoading(); // 数据到达后隐藏加载动画 myChart.setOption({ xAxis: { type: 'category', data: jsonData.retail_sales.year }, series: [{ type: 'line', data: jsonData.retail_sales.total }] }); }); </script>
JSON 数据文件示例(data/sale.json)
{ "retail_sales": { "year": ["2018", "2019", "2020", "2021", "2022"], "total": [1.37, 1.70, 1.79, 2.05, 2.17] } }
提示:直接双击打开本地 HTML 时,浏览器会因安全策略拦截本地文件间的异步请求(file:// 跨域限制),推荐使用 VS Code 的 Live Server 插件启动本地服务器运行。

四、可视化大屏:综合分析结果的呈现

什么是可视化大屏?把多张图表按业务逻辑组织在同一屏幕上,用于监控中心、指挥大厅等场景。本项目大屏由三个页签组成:农村电商发展(全国快递业务量、主要农产品生产总量、电商平台数量、农村电商零售额、多品类零售额占比)、销售分析(竞争对手的市场份额、不同种类商品市场占比、订单来源占比、快递包裹数量、活跃商家数量、订单数量与销售额随时间变化、各销售环节转化率)、用户分析(部分地区的用户购买喜好、用户分布、用户偏向的农产品、不同年龄段用户活跃度、用户满意度、用户对产品或服务的评论)。

大屏页面结构
<div class="header"> <!-- 屏幕头部:系统名称 + 页签导航 --> <h1>某农村电商平台数据分析</h1> <ul> <li>农村电商发展</li> <li>销售分析</li> <li>用户分析</li> </ul> </div> <div class="chartWarp"> <!-- 图表区:CSS 网格布局 --> <div class="pure-g"> <div class="pure-u-1-4"><div class="chartBlock"> <div class="hd"><h2>竞争对手的市场份额</h2></div> <div class="bd"><div id="compete" class="chartDiv"></div></div> </div></div> <!-- 其余图表单元结构相同,仅更换标题与 id --> </div> </div>
设计要点
  • 深色背景(如 #0b1d34)衬托数据光效,标题与装饰线使用青绿色系;
  • 网格布局(pure-g / pure-u-* 或 CSS Grid)控制每张图表的尺寸与位置,常用 1/4、1/3、1/2 等比例组合;
  • 每张图表一个独立的初始化函数,配合 $.get() 统一异步取数,同一 JSON 可被多张图表共用一次请求;
  • 三个页签共享头部导航,各自独立一个 HTML 页面,通过链接相互跳转。

实验任务8 学时 · 主题 + 联动 + 异步加载 + 大屏

任务 5.1 实现主题切换

引入 roma、shine、infographic、macarons、dark、vintage 六套主题文件,以"不同月份部分水产价格"(8 种鱼 × 8/9/10 月柱状图)为基础图表,用下拉选择框切换主题;切换时先 dispose() 销毁实例,再重新 init() 并 setOption() 重绘。

任务 5.2 实现多图表联动

绘制"主要肉类销售总量"柱状图(猪肉 / 牛肉 / 羊肉)与折线图(合计),用 chart.group = 'group1' + echarts.connect('group1') 实现联动;再添加按钮,点击后调用 echarts.disconnect('group1') 解除联动,观察悬停行为的变化。

任务 5.3 异步加载——农村电商发展页签

新建 develop.html,用 $.get("data/develop.json") 加载数据,绘制全国快递业务量(柱)、主要农产品生产总量(多系列柱)、电商平台数量(柱)、农村电商零售额(折线)、多品类零售额占比(堆叠柱)5 张图表。

任务 5.4 异步加载——销售分析页签

新建 sales.html,用 $.get("data/sales.json") 加载数据,绘制竞争对手的市场份额(饼)、不同种类商品市场占比(饼)、订单来源占比(环形)、快递包裹数量(柱)、活跃商家数量(多系列柱)、订单数量与销售额随时间变化(双轴折线)、各销售环节转化率(柱)7 张图表。

任务 5.5 异步加载——用户分析页签

新建 user.html,额外引入 echarts-wordcloud 插件,用 $.get("data/user.json") 加载数据,绘制部分地区的用户购买喜好(雷达)、用户分布(矩形树图)、用户偏向的农产品(嵌套饼图)、不同年龄段用户活跃度(折线 + dataZoom)、用户满意度(仪表盘)、用户评论(词云)6 张图表,复用项目 4 的交互技巧。

代码示例4 组在线可运行示例

课后习题

1. 关于 ECharts 主题的使用,正确的做法是?
  • A. 下载主题 .json 文件,通过 CSS 引入
  • B. 直接在页面中编写样式代码修改主题
  • C. 下载主题 .js 文件,在 HTML 页面中引入该文件后使用
  • D. 修改 ECharts 的源代码实现主题更换
答案:C 官方用法:下载主题 .js 文件后在 HTML 页面中引入,主题文件内部自动调用 registerTheme() 完成注册,随后即可在 init() 中指定使用。A、B、D 均与官方方法不符。
2. 完成自定义主题配置后,正确的使用步骤是?
  • A. 无需下载文件,直接在页面中编写样式配置选项
  • B. 选择 .js 格式文件下载,并在 HTML 页面中引入该文件
  • C. 只能下载 .json 格式文件,无需在页面中引入
  • D. 必须修改 ECharts 的源代码才能使用
答案:B 主题编辑器支持 .js / .json 两种格式,使用时应选择 .js 格式下载并在 HTML 页面中引入。A 忽略了下载环节,C 误认为只需 .json 且无需引入,D 与官方方法不符。
3. 关于 ECharts 实现多图表联动,下列说法正确的是?
  • A. 将图表实例转换为 JSON 格式后合并即可联动
  • B. 为各个图表实例指定相同的 group ID,再调用 echarts.connect 并传入该 ID
  • C. 修改两张图表的 series 数据使它们共用相同的颜色
  • D. 在每张图表中编写相同的事件监听代码
答案:B 教材给出了两种官方方法:① 为各个图表实例指定相同的 group ID,调用 echarts.connect 并传入该 ID;② 将需要联动的图表实例数组直接传递给 echarts.connect。二者等效,联动后共享鼠标悬停、选中高亮等交互状态。
4. ECharts 图表初始化后,能否异步加载并更新数据?
  • A. 不能,数据必须在初始化时一次性配置
  • B. 不能,数据更新必须修改源代码
  • C. 可以,使用 jQuery 等工具异步获取数据后,通过 setOption 方法更新图表
  • D. 可以,但只能通过刷新整个页面更新数据
答案:C ECharts 支持在图表初始化后异步加载并更新数据:使用 jQuery 等工具异步获取数据,再通过 setOption() 更新图表的配置和数据。A、B 错误在于数据不仅限于初始化时配置、更新也无需修改源码;D 错误在于不需要刷新页面。
5. 下列 JavaScript 库中,用于实现图表动态渲染和数据展示的是?
  • A. ECharts.js
  • B. jQuery.min.js
  • C. develop.js(自定义脚本)
  • D. index.js
答案:A ECharts 是数据可视化 JavaScript 库,用于图表动态渲染与数据展示。jQuery 用于简化 DOM 遍历、事件处理与 Ajax 交互,本身不用于图表渲染;develop.js、index.js 是自定义脚本,不是通用库。

操作题

绘制部分水产品价格柱状图

已知 13 种水产品的价格(单位:元/公斤):大黄花鱼 36、小黄花鱼 30、大带鱼 70、中小带鱼 26、马鲛鱼 32、鲳鱼 80、石斑鱼 120、海参 120、鱿鱼 40、八爪鱼 50、蛤蜊 8、扇贝 10、牡蛎 10。

要求:① 数据保存为 water.json,用 $.get() 异步加载并绘制柱状图;② x 轴标签设置 interval: 0 并旋转 45°,保证 13 个品种完整显示;③ 在图表上尝试切换主题(如 dark、vintage);④ 用 showLoading / hideLoading 模拟加载过程。

实训题

家乡好物可视化大屏

收集家乡 3~5 种特色农产品的价格、销量、评价数据(可自拟),制作一块深色可视化大屏。

要求:① 包含屏幕头部标题与页签导航;② 至少 4 张不同类型图表(柱状、折线、饼图等)的网格布局;③ 用 $.get() 从 JSON 文件异步加载数据;④ 至少两张图表实现联动;⑤ 输出 300 字以上的分析结论,说明大屏各模块的业务含义。
项目六

综合项目:电商平台运营数据可视化

综合应用 · 销售 / 订单 / 物流分析 · 运营大屏
理论 2 学时实验 8 学时综合大屏

项目概述

项目背景

随着互联网的普及,电子商务快速融入人们生活。某电商平台凭借商品种类丰富、市场覆盖广泛吸引大量消费者,其中服饰类商品销量表现突出。在激烈的市场竞争中,深入分析运营数据能帮助平台洞察消费者偏好与市场需求变化、挖掘业务优化机会;借助 ECharts 将销售、物流等复杂数据可视化,可以揭示潜在趋势与关联,为管理层提供直观、易理解的决策依据。

项目描述

本项目是前 5 个项目的综合应用:围绕"分析商品销售情况 → 分析商品订单情况 → 分析商品物流情况 → 大屏可视化"四条主线,使用 9 张数据表、9 类图表完成电商平台运营数据可视化分析,最后把全部图表组装成"电商企业平台运营数据分析"大屏。分析流程为:获取原始数据 → 可视化分析 → 创建运营数据仪表板

学习目标

  • 掌握综合项目分析流程:数据准备 → 图表选型 → 页面实现 → 大屏组装
  • 掌握用 fetch() 异步读取 JSON 数据并渲染图表(对比项目 5 的 $.get())
  • 掌握堆叠条形图(stack)、柱线混合图与双 Y 轴(yAxisIndex)的配置
  • 掌握data.map() 动态映射颜色、emphasis 悬停阴影等进阶技巧
  • 掌握用 CSS 网格布局组装多图表大屏,输出运营分析结论
数据洞察:耳饰销量(996 件)遥遥领先、A 渠道贡献最大;晚上(38951.65 元)与 3 月 8 日(30714.99 元)销售额达峰值,支付宝支付占比过半(507 单)、手机端下单占 86.1%——"晚上 + 手机 + 支付宝 + 耳饰"勾勒出核心用户画像。

理论要点

综合项目分析流程获取原始数据(JSON)→ 用可视化工具深度分析销售 / 订单 / 物流 → 根据结果创建运营数据仪表板。
图表选型数量对比用柱状图、多维度对比用堆叠条形图、趋势用柱线混合图、占比用饼图 / 圆环图、KPI 完成度用仪表盘。
fetch 异步加载fetch('data/xxx.json').then(res => res.json()).then(data => {...}),数据与图表分离,改数据不改代码。
堆叠条形图与双 Y 轴series 中设置 stack: 'total' 实现堆叠;定义两个 yAxis 数组、用 yAxisIndex 绑定系列实现柱线混合双轴。
动态映射与交互高亮data.map() 把含 color 属性的数据源映射为 ECharts 格式并动态着色;emphasis 配置悬停阴影增强交互反馈。
大屏组装CSS 定义整体布局与模块区域,逐一实现图表结构,JavaScript 动态加载数据,组装成运营仪表板。

知识点详解结合课件展开 · 点击标题展开/收起

一、综合项目的数据准备与任务拆分

本项目围绕销售分析、订单分析、物流分析三个方向组织数据,共使用 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() 链式处理响应与数据。

fetch('data/不同品类销售数量.json') // 请求 JSON 文件 .then(response => response.json()) // 解析响应为 JSON .then(data => { // data.categories 与 data.salesData 即文件中的数据 chart.setOption({ /* 使用 data 渲染图表 */ }); }) .catch(error => { console.error("加载JSON数据失败:", error); });
注意:fetch 与 $.get 一样受浏览器同源策略限制,直接双击打开本地 HTML(file:// 协议)会被拦截,推荐用 VS Code Live Server 等本地服务器运行。

三、堆叠条形图与双 Y 轴组合图

堆叠条形图(不同渠道 × 不同品类)

把 x 轴设为数值轴(value)、y 轴设为类目轴(category)得到横向条形图;再在三个渠道系列中同时设置 stack: 'total',同一类目下的系列会堆叠成一整条,直观对比各品类在三个渠道的总量与结构。

xAxis: { type: 'value', boundaryGap: [0, 0], name: '件' }, yAxis: { type: 'category', data: data.categories }, // 品类 series: [ { name: 'A渠道', type: 'bar', stack: 'total', data: data.platforms['A渠道'] }, { name: 'B渠道', type: 'bar', stack: 'total', data: data.platforms['B渠道'] }, { name: 'C渠道', type: 'bar', stack: 'total', data: data.platforms['C渠道'] } ]
双 Y 轴组合图(每日 / 时间段销售)

销售总金额与销售数量量纲不同(元 vs 件),必须使用两个 Y 轴:yAxis 写成数组定义左右两轴,系列中用 yAxisIndex 指定挂在哪个轴上。柱状图表达金额、折线图表达数量,趋势同步可读。

yAxis: [ { type: 'value', name: '销售总金额/元' }, // 左轴(索引 0) { type: 'value', name: '销售数量/件' } // 右轴(索引 1) ], series: [ { name: '销售总金额', type: 'bar', data: amounts, yAxisIndex: 0 }, { name: '销售数量', type: 'line', data: counts, yAxisIndex: 1, smooth: true } ]

四、数据动态映射与交互高亮

data.map() 动态映射颜色

支付方式数据源为每个数据项预置了 color 属性:{ "value": 507, "name": "支付宝", "color": "#316695" }。直接传给 ECharts 无法生效,需要先用 data.map() 遍历,把颜色映射进 itemStyle.color

var mappedData = paymentMethods.map(function (item) { return { value: item.value, name: item.name, itemStyle: { color: item.color } // 动态设置颜色 }; }); series: [{ type: 'pie', radius: ['40%', '65%'], data: mappedData }]
emphasis 悬停高亮

物流圆环图通过 emphasis 配置数据项在悬停时的阴影效果,让被选中的数据项"浮"出来:

emphasis: { itemStyle: { shadowBlur: 20, // 阴影模糊大小 shadowOffsetX: 0, // 阴影水平偏移 shadowColor: 'rgba(0, 0, 0, 0.5)' // 阴影颜色 } }

五、大屏可视化:组装运营仪表板

完成 9 张图表后,按三步组装大屏:

CSS 定义整体布局

用 CSS 合理划分各模块区域(如顶部为品类销量、中部为完成率与订单占比、底部为渠道与时段),确保美观实用。

逐一实现图表结构

每个模块一个 chartBlock:头部(chartTit 标题)+ 主体(chartDiv 容器),图表类型与展示内容匹配。

动态加载数据

通过 fetch() 将各数据表导入对应图表,实时展示;最后整体调试布局与交互。

大屏结论示例:本周销售完成率 86%,任务接近完成;晚上时段与 3 月 8 日销售额最高;支付宝 + 手机端是主流;韵达快递承担主要配送。

实验任务8 学时 · 9 张图表 + 大屏组装

任务 6.1 柱状图分析不同品类的商品销售数量

fetch('data/不同品类销售数量.json') 加载数据,绘制柱状图(项链 651 / 手链 778 / 戒指 228 / 耳饰 996 / 发饰 510),x 轴标签 interval: 0 全部显示,用 visualMap 按数值渐变着色。

任务 6.2 堆叠条形图分析不同渠道的不同品类销售

绘制横向堆叠条形图:x 轴为数值轴、y 轴为类目轴(发饰 / 戒指 / 手链 / 耳饰 / 项链),A/B/C 三个渠道系列设置 stack: 'total',观察 A 渠道在发饰(255)与耳饰(433)上的贡献。

任务 6.3 柱线混合图分析每日销售总金额与销售数量

绘制 3 月 2—8 日双 Y 轴组合图:柱状图表示销售总金额(左轴)、平滑折线表示销售数量(右轴),tooltip 用 axis 触发,解读 3 月 5 日"金额降、数量稳"与 3 月 8 日峰值。

任务 6.4 柱线组合图分析不同时间段的销售情况

绘制凌晨至晚上 6 个时段的双 Y 轴组合图,并给销售金额柱添加 markLine 平均线,分析"晚上最高、凌晨最低"的时段规律。

任务 6.5 仪表盘分析本周商品销售完成率

绘制仪表盘展示 86%:radius: '70%' 控制大小、center 调整位置,axisLine 用分段颜色(0-30/30-70/70-100 三档)区分完成区间。

任务 6.6 圆环图分析不同支付方式的订单占比

支付宝 507 / 微信 287 / 银联 63,数据源预置 color 属性,用 data.map() 动态映射到 itemStyle.color,绘制圆环图并总结支付习惯。

任务 6.7 饼图分析不同下单方式的订单占比

手机端 738 / PC 端 119,绘制饼图,用 label 显示百分比,说明移动端下单已成为主流。

任务 6.8 饼图分析用户使用优惠的订单占比

使用优惠 138 / 未使用 719,绘制饼图,结合"卡券数量有限、满减门槛"等业务原因解读数据。

任务 6.9 圆环图分析商品物流情况

申通 134 / 圆通 230 / 韵达 274 / 中通 219,绘制圆环图,并通过 emphasis 配置悬停阴影(shadowBlur / shadowOffsetX / shadowColor)增强交互。

任务 6.10 大屏可视化

参照 total.html:CSS 定义大屏布局(顶部品类、中部完成率与订单占比、底部渠道与时段),把全部图表组装成"电商企业平台运营数据分析"大屏并输出分析结论。

代码示例8 组在线可运行示例

课后习题

1. 在项目 6 中,使用 JavaScript 的( )方法将 JSON 数据文件读取到页面?
  • A. $.get()
  • B. fetch()
  • C. getElementById()
  • D. import
答案:B 项目 6 使用 fetch() 方法读取 JSON 数据:fetch('data/xxx.json').then(res => res.json()).then(data => {...})。A 是项目 5 中 jQuery 的取数方式;C 是获取 DOM 元素;D 用于 ES Module 导入。
2. 绘制堆叠条形图时,使多个数据系列堆叠在一起的关键配置是?
  • A. 在每个系列中设置 stack: 'total'
  • B. 在每个系列中设置 type: 'stack'
  • C. 在 xAxis 中设置 stacked: true
  • D. 在 yAxis 中设置 stack: 'total'
答案:A 在 series 的每个数据系列中设置相同的 stack: 'total',这些系列就会在同类目下堆叠显示。横向堆叠条形图的 x 轴为数值轴(value)、y 轴为类目轴(category)。
3. 在柱线混合图中,让折线系列使用第二个(右侧)Y 轴,应配置?
  • A. axis: 1
  • B. yAxisIndex: 1
  • C. yAxis: 'right'
  • D. axisIndex: 2
答案:B yAxis 写成数组定义多个坐标轴(索引从 0 开始),系列中用 yAxisIndex: 1 指定挂在第二个 Y 轴上。两个 Y 轴可分别设置 name、min、max、interval。
4. 数据源中为每个数据项添加了 color 属性,要将颜色动态设置到 itemStyle.color 中,应使用( )方法映射数据?
  • A. data.filter()
  • B. data.reduce()
  • C. data.map()
  • D. data.sort()
答案:C data.map() 遍历数组并返回新数组,把 {value, name, color} 映射为 {value, name, itemStyle: {color}} 格式。filter 用于筛选、reduce 用于汇总、sort 用于排序。
5. 某电商平台本周销售总金额为 129279 元、目标总销售金额为 150000 元,本周商品销售完成率约为?
  • A. 82%
  • B. 84%
  • C. 86%
  • D. 88%
答案:C 完成率 = 本周总销售金额 ÷ 本周目标总销售金额 × 100% = 129279 ÷ 150000 × 100% ≈ 86%,表明销售任务接近完成但仍有一定差距。

操作题

全国交通客运量数据可视化分析

某省交通部门收集了客运量数据:① 各类交通方式客运量:铁路 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 张不同类型图表,涵盖柱状、堆叠条形、柱线混合双轴、饼 / 圆环、仪表盘;② 统一用 fetch() 从 JSON 文件异步加载;③ 组装成深色大屏并输出 400 字以上运营分析结论(含销量最高品类、最优渠道、高峰时段等业务建议)。
项目七

大数据分析可视化平台

基于 ECharts 的零门槛可视化平台 · 数据空间 → 指标 → 图表库 → 仪表盘 → 大屏
理论 2 学时实验 2 学时拓展应用

项目概述

项目背景

前 6 个项目都是通过手写 ECharts 代码完成数据可视化。但在真实的企业与教学场景中,还有大量不具备编程基础的业务人员同样需要完成可视化分析。广东泰迪智能科技股份有限公司自主研发的大数据分析可视化平台——一款基于 ECharts、用于可视化仪表盘展示的零门槛可视化工具,将常用图表封装为"拖曳式"操作,适用于高校教学和各领域企业。

项目描述

本项目以电商平台运营数据为例,使用大数据分析可视化平台完成"上传数据 → 设置指标 → 配置图表库 → 设计仪表盘 → 查看大屏"的全流程配置,把第 6 个项目中的 9 张数据表与 9 类图表在平台上重新实现一遍,最终输出可全屏展示、可生成链接分享的电商运营数据可视化大屏,体会平台化、流程化的可视化工作方式。

学习目标

  • 了解大数据分析可视化平台的概念、特点与"公共空间"模块
  • 掌握数据空间配置:数据库连接(DB2 / SQL Server / MySQL / Oracle / PostgreSQL)与数据文件上传
  • 掌握指标的 5 种构建方式:原数据、四则运算、分组聚合、筛选、SQL 脚本
  • 掌握图表库常用图表类型,以及仪表盘固定布局(9 种)与自由布局的设计
  • 掌握大屏 3 种风格(默认 / 深色 / 浅色)的选择与展示,完成全流程配置
数据洞察:平台把 ECharts 的编程能力封装成"配置能力":同一份"不同时间段销售总金额与销售数量.csv",在指标模块做一次四则运算(销售额 ÷ 数量)就能得到客单价;同一张图表在图表库可一键切换柱状 / 环形 / 折线;仪表盘固定布局最多 9 张图表、大屏支持 1~6 张仪表盘 + 3 种主题风格——"配置"与"编程"殊途同归。

理论要点

平台特点无须编程、拖曳操作;图表种类多样、可交互、自定义程度高;提供多种仪表盘布局与项目模板;支持查看图表源码(方便教学);支持数据定时更新。
公共空间展示所有公开大屏,支持预览与复制(复制后自动添加"日期+随机数字"后缀);自己的大屏可分享到公共空间,也可设为私有或删除。
数据空间分为"数据库连接"(DB2 / SQL Server / MySQL / Oracle / PostgreSQL)与"数据文件"(本地 CSV 上传 / 数据库文件上传)两部分,用于添加与管理数据。
指标构建对上传数据文件进行再加工,共 5 种方式:原数据、四则运算、分组聚合、筛选、SQL 脚本。
图表库添加与管理图表:折线(基础 / 柱线混合 / 堆叠)、柱状(基础 / 堆叠 / 正负 / 横向)、饼图(基础 / 环形 / 嵌套环形)、散点、地图、词云 / 雷达 / 仪表盘 / 漏斗 / 河流 / 热力 / 旭日 / 箱线等。
仪表盘与大屏仪表盘:固定布局(9 种经典布局,最多 9 张图表)+ 自由布局(拖曳、装饰);大屏:默认 / 深色 / 浅色 3 种风格,可选 1~6 张仪表盘,支持全屏、分享与生成链接。

知识点详解结合课件展开 · 点击标题展开/收起

一、平台简介与公共空间

大数据分析可视化平台由广东泰迪智能科技股份有限公司自主研发、基于 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 张图表的创建:品类销量用基础柱状图、渠道品类用堆叠柱状图(或横向)、支付 / 物流占比用环形饼图、下单 / 优惠占比用基础饼图、每日 / 时段销售用柱线混合图、完成率用仪表盘。设计好的图表保存在"个人图表"中,供仪表盘调用。

// 平台“点一点”生成的图表,背后就是一段 ECharts 配置(平台可查看源码): // 以“品类销量 基础柱状图”为例: option = { xAxis: { type: 'category', data: ['生鲜', '粮油', '服饰', '家电', '美妆'] }, yAxis: { type: 'value' }, series: [{ type: 'bar', data: [4860, 3520, 2890, 2140, 1630] }] }; // 平台:拖入图表 → 选指标 → 点确定; // 编程:写配置 → setOption()。两者本质相同:数据 + 图形映射。

五、仪表盘:固定布局与自由布局

"仪表盘"模块由仪表盘个人图表两部分组成。仪表盘的设计分为固定布局自由布局

  • 固定布局:主体画布由多个小画布组成,每个小画布放置一张在图表库中设计好的图表。固定布局包含 9 种可视化经典布局,每种各有特点,最多可同时展示 9 张图表
  • 自由布局:可自定义图表显示方式。通过新增自由布局、拖曳个人图表到画布中,使用边框、装饰、文本等样式装饰图表,构成丰富且极具个性搭配的图表。

本项目选择 3×3 九宫格固定布局,把 9 张图表(或其中 6 张核心图表)拖入各小画布,调整位置与大小后保存,即完成电商运营数据仪表盘的设计。

六、大屏与项目实施流程

"大屏"提供默认、深色、浅色共 3 种风格的主题供选择,主要由各个仪表盘组成:大屏可选 1~6 张仪表盘,新增填写的名称为大屏显示名称;大屏可全屏展示分享到公共空间生成链接使用。

使用平台实现电商平台运营数据可视化的完整流程如下:

数据空间配置

上传 9 个 CSV 数据文件,在列表中预览确认数据正确。

设置指标

对数据文件构建指标:原数据直接使用 + 四则运算生成客单价。

配置图表库

选择指标与图表类型,创建 9 张图表到"个人图表"。

设计仪表盘

选择固定布局(如 3×3),把个人图表拖入小画布,调整大小保存。

查看大屏

选择风格主题,加入 1~6 张仪表盘,全屏展示并生成链接分享。

项目总结:平台用流程化思维把"数据 → 指标 → 图表 → 仪表盘 → 大屏"串成一条标准流水线;去编程、拖曳式的操作让没有 ECharts 编程基础的人也能轻松构建数据分析流程。通过对电商平台销售、订单、物流三个方面的可视化分析,帮助决策者快速洞察市场动态、优化运营策略、提升平台整体竞争力。

实验任务2 学时 · 五步完成平台全流程

任务 7.1 数据空间配置

登录大数据分析可视化平台,进入"数据空间"→"数据文件",上传项目 7 的 9 个 CSV 数据文件(不同品类商品 / 不同渠道品类 / 每日销售金额 / 时间段销售 / 完成率 / 支付方式 / 下单方式 / 使用优惠 / 物流公司),上传后在列表中逐个预览,核对数据与项目 6 的 JSON 表一致。

任务 7.2 设置指标

进入"指标"模块,选择数据文件构建指标:支付 / 下单 / 物流 / 优惠 / 完成率等文件直接使用"原数据"方式;"不同时间段销售总金额与销售数量"用"四则运算"构建客单价 = 销售总金额 ÷ 销售数量;尝试"分组聚合"按渠道聚合销量、"筛选"筛出销售额大于 15000 元的时段。

任务 7.3 配置图表库

进入"图表库"新建 9 张图表:品类销量(基础柱状图)、渠道品类(堆叠柱状图)、每日销售金额(柱状图)、时段销售(柱线混合图)、完成率(仪表盘)、支付占比(环形饼图)、下单占比(饼图)、优惠占比(饼图)、物流占比(环形饼图),逐一保存到"个人图表"。

任务 7.4 设计仪表盘

进入"仪表盘",选择"固定布局"中的 3×3 九宫格布局,从"个人图表"拖入 6~9 张图表到各个小画布,调整位置与大小;再尝试"自由布局",拖曳图表并用边框 / 装饰 / 文本样式美化,比较两种布局的差异。

任务 7.5 查看大屏

进入"大屏"模块,新增大屏并命名为"电商平台运营数据分析";依次选择"默认 / 深色 / 浅色"3 种风格主题观察效果,选择一种加入 1~2 张已设计的仪表盘;全屏展示,分享到"公共空间"并生成访问链接,最后输出 300 字以上的分析结论(销量最高品类、主流支付与下单方式、高峰时段、物流主力等)。

代码示例5 组平台配置效果模拟

平台以"拖曳配置"代替编程,但每一类配置背后都对应一组 ECharts 配置。以下示例用代码模拟平台各模块的配置效果,帮助理解"平台操作 ↔ 代码实现"的对应关系。

课后习题

1. 大数据分析可视化平台是由( )公司自主研发的?
  • A. 阿里云
  • B. 腾讯云
  • C. 广东泰迪智能科技股份有限公司
  • D. 百度
答案:C 平台由广东泰迪智能科技股份有限公司自主研发,基于 ECharts、用于可视化仪表盘展示,是一款适用于高校教学和各领域企业的零门槛可视化工具。
2. 平台"数据空间"的"数据库连接"部分,支持下列哪种数据库?
  • A. MySQL
  • B. Redis
  • C. MongoDB
  • D. SQLite
答案:A "数据库连接"支持 DB2、SQL Server、MySQL、Oracle、PostgreSQL 等常用数据库类型;Redis / MongoDB / SQLite 不在其列。
3. "指标"模块提供的数据构建方式不包括下列哪一项?
  • A. 四则运算
  • B. 分组聚合
  • C. 数据清洗
  • D. SQL 脚本
答案:C 指标的 5 种构建方式是:原数据、四则运算、分组聚合、筛选、SQL 脚本,不包含"数据清洗"。
4. 仪表盘的"固定布局"提供了( )种可视化经典布局,最多可同时展示( )张图表?
  • A. 8 种,8 张
  • B. 9 种,9 张
  • C. 10 种,10 张
  • D. 6 种,6 张
答案:B 固定布局包含 9 种可视化经典布局,每种布局各有特点,最多可同时展示 9 张图表。
5. 平台"大屏"提供了"默认""深色"和( )共 3 种风格主题,一张大屏可选( )张仪表盘?
  • A. 浅色,1~6 张
  • B. 护眼,1~4 张
  • C. 浅色,2~8 张
  • D. 科技,1~6 张
答案:A 大屏提供"默认 / 深色 / 浅色"3 种风格主题,可选 1~6 张仪表盘,支持全屏展示、分享到公共空间、生成链接使用。

操作题

使用平台完成电商运营数据可视化全流程

使用大数据分析可视化平台,以上传"不同品类商品的销售数量.csv"与"不同时间段销售总金额与销售数量.csv"等数据文件为例,完成从数据到发布的全流程配置。

要求:① 数据空间上传 9 个 CSV 并预览;② 设置指标(原数据 + 四则运算客单价);③ 图表库创建 9 张图表;④ 仪表盘采用 3×3 固定布局拼装;⑤ 大屏选择"深色"风格、命名"电商平台运营数据分析"、加入 1~2 张仪表盘,全屏展示并生成链接分享到公共空间;⑥ 截取每个环节的界面截图,整理成操作报告。

实训题

用 ECharts 编程复现平台仪表盘

平台"支持查看图表源码"——把平台配置出的图表导出为 ECharts 配置。参照这一能力,不使用平台,改用代码实现一个"电商运营数据仪表盘"页面:品类销量柱状图 + 渠道堆叠条形图 + 支付方式圆环图 + 下单方式饼图 + 物流圆环图 + 完成率仪表盘。

要求:① 至少 6 张图表,模拟平台固定布局九宫格效果(可用 CSS Grid 排版);② 为页面增加"默认 / 深色 / 浅色"3 个主题切换按钮,一键切换整页配色;③ 数据统一用 fetch() 从 JSON 文件加载;④ 输出 300 字以上分析结论。