周口市网站建设_网站建设公司_云服务器_seo优化
2025/12/23 2:05:23 网站建设 项目流程

一、ECharts 概念:

ECharts 是由百度前端团队开发并维护的开源可视化库,基于 JavaScript 实现,支持涵盖折线图、柱状图、饼图、散点图、地图、雷达图、仪表盘、3D 图表等 20+ 图表类型,同时提供拖拽重计算、数据刷选、联动交互等高级功能。

核心优势:为何成为前端可视化首选?

  1. 开箱即用,低成本上手:无需复杂的底层封装,几行代码即可实现基础图表渲染,API 设计符合前端开发者直觉;
  2. 全场景覆盖:从简单的单维度数据展示,到复杂的多图表联动、3D 可视化、地理信息可视化,满足企业级所有可视化需求;
  3. 高度可定制:支持自定义主题、样式、动画、交互逻辑,可精准匹配产品视觉风格;

与其他可视化库的对比

可视化库优势劣势适用场景
ECharts功能全、定制性强、中文文档、适配性好3D 功能需依赖扩展库企业级后台、大屏可视化、通用数据展示
D3.js灵活性极高、底层能力强学习成本高、开发效率低高度定制化的复杂可视化场景
Chart.js轻量、易用、体积小图表类型少、高级功能弱简单的轻量级可视化需求
Highcharts交互流畅、国际化文档商业使用需授权、体积较大海外项目、对交互要求高的场景

综上,ECharts 是 “性价比” 最高的选择 —— 既兼顾开发效率,又能满足绝大多数企业级场景的定制需求。

二、ECharts 快速入门:从环境搭建到第一个图表

1. 环境准备:三种引入方式

ECharts 支持多种引入方式,可根据项目场景选择:

方式 1:CDN 引入(快速测试 / 小型项目)

无需安装依赖,直接在 HTML 中引入官方 CDN 链接:

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>ECharts 入门示例</title> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> </head> <body> <div id="main" style="width: 600px; height: 400px;"></div> </body> </html>
方式 2:npm 安装(工程化项目,推荐)

适用于 Vue/React/Angular 等框架项目,通过包管理器安装:

# npm 安装 npm install echarts --save # yarn 安装 yarn add echarts # pnpm 安装 pnpm add echarts
方式 3:按需引入(减小项目体积)

ECharts 完整包体积约 500KB+,按需引入可仅加载所需图表和组件:

// 引入 ECharts 核心模块 import * as echarts from 'echarts/core'; // 引入柱状图图表,按需引入需要的图表类型 import { BarChart } from 'echarts/charts'; // 引入提示框、标题、直角坐标系等组件 import { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components'; // 引入 Canvas 渲染器(默认) import { CanvasRenderer } from 'echarts/renderers'; // 注册所需组件 echarts.use([TitleComponent, TooltipComponent, GridComponent, BarChart, CanvasRenderer]);

2. 第一个图表:柱状图实现

无论哪种引入方式,ECharts 核心渲染流程均为 “初始化实例 → 配置项设置 → 渲染图表” 三步:

// 步骤 1:获取图表容器 DOM 节点 const chartDom = document.getElementById('main'); // 步骤 2:初始化 ECharts 实例 const myChart = echarts.init(chartDom); // 步骤 3:配置项(核心,决定图表样式、数据、交互) const option = { // 标题配置 title: { text: '2024年各季度产品销量', // 主标题 subtext: '单位:万件', // 副标题 left: 'center' // 标题位置:居中 }, // 提示框配置:鼠标悬浮显示数据详情 tooltip: { trigger: 'axis', // 触发方式:坐标轴触发 axisPointer: { type: 'shadow' } // 指示器样式:阴影,就是滑动上去背景变灰 }, // 图例配置:多系列数据时区分不同系列 legend: { data: ['产品A', '产品B'], // 配置可显示图例,图例就是图标旁的小图标,有哪些数据类型 left: 'left' }, // 直角坐标系配置:x/y 轴容器,就是配置坐标轴或者说图表主体内容的位置 grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true // 包含坐标轴标签,让坐标轴标签也参与位置计算 }, // x 轴配置 xAxis: { type: 'category', // 类目轴(非数值) data: ['第一季度', '第二季度', '第三季度', '第四季度'] }, // y 轴配置 yAxis: { type: 'value' // 数值轴 }, // 系列数据:图表核心数据 series: [ { name: '产品A', type: 'bar', // 图表类型:柱状图 data: [35, 48, 62, 75], itemStyle: { color: '#409EFF' } // 柱子颜色 }, { name: '产品B', type: 'bar', data: [28, 39, 51, 68], itemStyle: { color: '#67C23A' } } ] }; // 步骤 4:设置配置项并渲染 myChart.setOption(option);

运行上述代码,即可得到一个包含标题、提示框、图例的双系列柱状图 —— 这是 ECharts 最基础的使用范式,所有复杂图表均基于 “配置项(option)” 的扩展:

3. 核心概念:理解 ECharts 配置项

ECharts 的核心是 “配置项驱动”,所有功能都通过option对象配置,掌握以下核心概念,就能快速适配所有图表类型:

  • 容器(Dom):必须为图表设置固定宽高(或通过 CSS 自适应),否则无法渲染;
  • 组件(Component):标题(title)、提示框(tooltip)、图例(legend)、坐标轴(xAxis/yAxis)、网格(grid)等,是图表的 “辅助元素”;
  • 系列(Series):图表的核心数据层,type字段决定图表类型(bar/line/pie 等),data字段为数据源;
  • 样式(Style):通过itemStyle/textStyle/axisStyle等配置元素样式,支持颜色、字体、边框、阴影等;
  • 交互(Interaction):通过tooltip/dataZoom/roam等配置交互逻辑,如鼠标悬浮、数据缩放、地图漫游等。

三、ECharts 核心场景实战:从基础图表到高级交互

1. 常见图表类型:

ECharts 支持 20+ 图表类型,以下是高频场景的配置要点:

场景 1:折线图

适用于展示数据随时间 / 维度的变化趋势,核心配置与柱状图类似,仅需将series.type改为line,并可配置折线平滑、标记点等:

series: [ { name: '用户增长', type: 'line', data: [120, 150, 180, 210, 190, 250], smooth: true, // 折线平滑 symbol: 'circle', // 标记点形状 symbolSize: 8, // 标记点大小 markPoint: { // 标记极值点 data: [ { type: 'max', name: '最大值' }, { type: 'min', name: '最小值' } ] }, markLine: { // 标记平均线 data: [{ type: 'average', name: '平均值' }] } } ]
场景 2:饼图

适用于展示各维度占总体的比例,核心配置需注意radius(饼图半径)、label(标签)、roseType(南丁格尔图):

option = { title: { text: '产品品类占比', left: 'center' }, tooltip: { trigger: 'item' }, legend: { orient: 'vertical', left: 'left' }, series: [ { name: '销量占比', type: 'pie', radius: ['40%', '70%'], // 内/外半径(环形图) avoidLabelOverlap: false, label: { show: true, position: 'outside', formatter: '{b}: {c} ({d}%)' // 标签格式:名称+数值+百分比 }, emphasis: { // 鼠标悬浮高亮 itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0,0,0,0.5)' } }, data: [ { value: 35, name: '电子产品' }, { value: 25, name: '服装' }, { value: 20, name: '食品' }, { value: 15, name: '家居' }, { value: 5, name: '其他' } ] } ] };

场景 3:3D 图表

通过 ECharts GL 扩展库实现 3D 柱状图、散点图、地图,需先引入echarts-gl

<script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
option = { title: { text: '3D 销量对比图' }, xAxis3D: { type: 'category', data: ['Q1', 'Q2', 'Q3', 'Q4'] }, yAxis3D: { type: 'category', data: ['产品A', '产品B', '产品C'] }, zAxis3D: { type: 'value' }, grid3D: { boxWidth: 200, boxHeight: 100, depth: 80 }, series: [ { type: 'bar3D', data: [ [0, 0, 35], [0, 1, 28], [0, 2, 42], [1, 0, 48], [1, 1, 39], [1, 2, 55], [2, 0, 62], [2, 1, 51], [2, 2, 68], [3, 0, 75], [3, 1, 68], [3, 2, 80] ], shading: 'lambert', // 3D 着色方式 label: { show: true } } ] };

2. 高级交互

ECharts 提供丰富的交互能力,以下是企业级项目高频使用的交互功能:

功能 1:动态更新数据

适用于实时数据展示(如监控大屏、实时销量),通过setOption增量更新数据:

// 模拟实时数据更新 let count = 0; setInterval(() => { const newData = [ Math.floor(Math.random() * 100), Math.floor(Math.random() * 100), Math.floor(Math.random() * 100), Math.floor(Math.random() * 100) ]; // 增量更新:仅修改数据,保留其他配置 myChart.setOption({ series: [{ name: '产品A', data: newData }] }); count++; if (count > 10) clearInterval(this); }, 1000);

功能 2:数据缩放

适用于大数据量图表,允许用户缩放 / 拖拽查看数据细节:

option = { xAxis: { type: 'category', data: [...Array(100).keys()].map(i => `第${i+1}天`) }, yAxis: { type: 'value' }, dataZoom: [ { type: 'slider', xAxisIndex: 0, bottom: 0 }, // 底部滑动条缩放 { type: 'inside', xAxisIndex: 0 } // 鼠标滚轮缩放 ], series: [{ type: 'line', data: [...Array(100)].map(() => Math.random() * 100) }] };

功能 3:自定义提示框

通过formatter自定义提示框内容,展示更丰富的信息:

tooltip: { trigger: 'axis', formatter: function (params) { let res = `<div style="font-weight: bold;">${params[0].name}</div>`; params.forEach(item => { res += `<div>${item.seriesName}:${item.value}万件(同比${item.value > 50 ? '增长' : '下降'}${Math.abs(item.value - 50)}%)</div>`; }); return res; } }

五、ECharts 进阶学习(一部分)

1. 自定义主题

ECharts 支持自定义主题(如匹配产品品牌色),可通过官方主题编辑器(https://echarts.apache.org/zh/theme-builder.html)生成主题配置,再引入项目:

// 引入自定义主题 import './my-theme.json'; // 初始化时指定主题 const myChart = echarts.init(chartDom, 'my-theme');

2. 导出图表为图片 / PDF

通过 ECharts 内置的getDataURL方法,可将图表导出为图片,结合 jsPDF 可实现 PDF 导出:

// 导出为图片 const exportChart = () => { const dataUrl = myChart.getDataURL({ type: 'png', pixelRatio: 2, // 分辨率 backgroundColor: '#fff' }); const a = document.createElement('a'); a.href = dataUrl; a.download = 'chart.png'; a.click(); }; // 绑定导出按钮事件 document.getElementById('exportBtn').addEventListener('click', exportChart);

总结:

ECharts是目前使用较为广泛的一项数据可视化的工具,使用起来简单方便。我在写项目的时候使用起来非常简单,只需要写几行代码就能实现一个不错的效果图,且通过个性化配置后能很好的适配使用场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询