从零开始学Echarts 视频教你做出第一张图表 零基础也能轻松上手的数据可视化入门指南
好呀!咱们今天就一起聊聊 ECharts 这个超棒的数据可视化工具。别被那些专业的词汇吓到,其实它比你想的要简单得多,就像搭积木一样,一块一块来,你就能做出超酷的图表!
先认识一下这位”新朋友”
ECharts 是谁?简单来说,它是一个开源的JavaScript可视化库,专门用来在网页上画各种图表——柱状图、折线图、饼图、地图、散点图……你想得到的,它基本都能画。
它最初是由百度团队开发并开源出来的,现在已经被全球数百万开发者使用。为什么这么多人喜欢它?因为它简单、强大、免费,而且文档写得特别贴心,中文文档对国内开发者超级友好。
想象一下,你在做一个项目,需要把销售数据画成图表展示给老板看。有了 ECharts,你只需要写几行代码,就能得到一个既美观又交互丰富的图表,比你自己手动画省事太多了。
准备工作——你需要的是什么?
别担心,不需要你安装什么复杂的开发环境,也不用装什么重工具。
方式一:最简单的方式——直接用 CDN(推荐新手)
打开你的 HTML 文件,在 <head> 标签里加一行代码:
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
这就够了!浏览器会自动从 CDN 加载 ECharts 库,你不用下载任何东西。
方式二:用 npm 安装(适合项目开发者)
如果你在用 Node.js 或者前端框架(比如 Vue、React),可以:
npm install echarts
然后在你的项目里引入:
import * as echarts from 'echarts';
第一张图表——让我们从柱状图开始
好,准备工作做好了。现在我们来画人生中第一张图表!
创建一个 HTML 文件
新建一个 index.html 文件,内容如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>我的第一张 ECharts 图表</title>
<!-- 引入 ECharts -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
</head>
<body>
<!-- 给图表准备一个容器 -->
<div id="chart" style="width: 600px; height: 400px;"></div>
<script>
// 1. 初始化 ECharts 实例
var chart = echarts.init(document.getElementById('chart'));
// 2. 配置图表选项
var option = {
title: {
text: '2024年上半年销售额'
},
tooltip: {
trigger: 'axis'
},
xAxis: {
type: 'category',
data: ['一月', '二月', '三月', '四月', '五月', '六月']
},
yAxis: {
type: 'value'
},
series: [{
name: '销售额',
type: 'bar',
data: [12000, 15000, 13000, 17000, 20000, 18000],
// 让柱子好看一点
itemStyle: {
color: '#5470c6'
}
}]
};
// 3. 把配置应用到图表上
chart.setOption(option);
</script>
</body>
</html>
一步步解释给你听
第一行: var chart = echarts.init(document.getElementById('chart'));
这行代码的意思是:”嘿 ECharts,请在 ID 为 ‘chart’ 的那个 div 里创建一个图表。”
第二部分:option 配置对象
这个 option 就是图表的”配方”,里面告诉 ECharts 要画什么类型的图、标题叫什么、数据是什么……你可以把它想象成做菜的食谱:
- title:图表的标题,写”2024年上半年销售额”
- tooltip:鼠标悬停时显示的信息框
- xAxis:横轴,这里用的是”类目轴”,数据是1月到6月
- yAxis:纵轴,数值轴,用来显示销售额的具体数字
- series:系列数据,就是你要画的那根根柱子,
type: 'bar'表示柱状图
第三行: chart.setOption(option);
把”配方”交给 ECharts,它就开工了!
现在打开浏览器看看——哇! 一张漂亮的柱状图就出来了!
再来一张——折线图
柱状图搞定了,咱们来画个折线图,看看数据随时间的变化趋势。
var chart = echarts.init(document.getElementById('chart'));
var option = {
title: {
text: '网站每日访问量趋势'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['访问量']
},
xAxis: {
type: 'category',
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
},
yAxis: {
type: 'value'
},
series: [{
name: '访问量',
type: 'line',
data: [320, 332, 401, 434, 590, 720, 680],
// 给折线图加点颜色
itemStyle: {
color: '#91cc75'
},
// 让折线更平滑
smooth: true
}]
};
chart.setOption(option);
注意看,这次我们把 type 改成了 'line',折线图就出来了!加了 smooth: true 后,线条会更圆润,看起来更舒服。
饼图——展示占比关系
饼图特别适合展示”各部分占总体的比例”。比如你想知道公司各产品的销售额占比:
var chart = echarts.init(document.getElementById('chart'));
var option = {
title: {
text: '各产品销售额占比',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [{
name: '销售额',
type: 'pie',
radius: '50%', // 饼图半径
data: [
{ value: 1048, name: '产品A' },
{ value: 735, name: '产品B' },
{ value: 580, name: '产品C' },
{ value: 484, name: '产品D' },
{ value: 300, name: '产品E' }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}]
};
chart.setOption(option);
饼图的配置和之前不太一样,重点在 series 里的 data,每一项都是一个 {value, name} 对象。tooltip 的 formatter 用 {b} 表示名称、{c} 表示数值、{d} 表示百分比,这些占位符很实用。
散点图——探索数据之间的关系
散点图适合展示两个变量之间的关系,比如”学习时间和考试成绩”:
var chart = echarts.init(document.getElementById('chart'));
// 模拟数据:[学习时间(小时), 考试成绩]
var data = [
[1, 55], [2, 62], [3, 70], [4, 75], [5, 82],
[6, 88], [7, 91], [8, 94], [9, 96], [10, 98]
];
var option = {
title: {
text: '学习时间与考试成绩关系'
},
tooltip: {
trigger: 'item',
formatter: function(params) {
return '学习' + params.data[0] + '小时,成绩' + params.data[1] + '分';
}
},
xAxis: {
type: 'value',
name: '学习时间(小时)'
},
yAxis: {
type: 'value',
name: '考试成绩'
},
series: [{
name: '学习数据',
type: 'scatter',
data: data,
symbolSize: 15, // 散点大小
itemStyle: {
color: '#ee6666'
}
}]
};
chart.setOption(option);
如何让图表更专业?这些技巧要知道
1. 响应式——让图表自适应窗口大小
你肯定不想图表在手机上显示得歪歪扭扭吧?加上这段:
window.addEventListener('resize', function() {
chart.resize();
});
这行代码能让图表在窗口大小变化时自动调整,超实用!
2. 数据动态更新——让图表”活”起来
// 每2秒更新一次数据
setInterval(function() {
var newData = [];
for (var i = 0; i < 6; i++) {
newData.push(Math.floor(Math.random() * 20000) + 5000);
}
chart.setOption({
series: [{
data: newData
}]
});
}, 2000);
用 setInterval 定期刷新数据,图表就像实时dashboard一样,这在监控大屏里非常常见。
3. 添加交互——点击事件
chart.on('click', function(params) {
alert('你点击了:' + params.name + ',数据为:' + params.value);
});
用户点击图表的某个柱子或点时,会触发这个事件,你可以据此打开详情弹窗或者跳转到另一个页面。
4. 主题定制——让图表更符合你的品牌
ECharts 支持多种内置主题,也可以自定义:
// 使用内置主题
var chart = echarts.init(document.getElementById('chart'), 'dark');
// 内置主题有:'dark'、'light' 等
// 或者自定义主题
var chart = echarts.init(document.getElementById('chart'), {
color: ['#ff7f0e', '#845b3a', '#d62728', '#9467bd'],
backgroundColor: '#f5f5f5'
});
进阶一点——雷达图和地图
雷达图——多维度能力评估
雷达图很适合展示多个维度的数据,比如游戏角色属性、员工综合能力评估等:
var chart = echarts.init(document.getElementById('chart'));
var option = {
title: {
text: '员工能力雷达图'
},
legend: {
data: ['员工A', '员工B']
},
radar: {
indicator: [
{ name: '沟通能力', max: 100 },
{ name: '技术能力', max: 100 },
{ name: '执行力', max: 100 },
{ name: '创新能力', max: 100 },
{ name: '团队协作', max: 100 },
{ name: '学习能力', max: 100 }
]
},
series: [{
name: '能力评估',
type: 'radar',
data: [
{ value: [85, 90, 75, 80, 92, 88], name: '员工A' },
{ value: [78, 82, 90, 70, 85, 75], name: '员工B' }
]
}]
};
chart.setOption(option);
radar 配置里的 indicator 定义了每个维度的名称和最大值,data 里每个人的各个维度得分一目了然。
地图——ECharts 的拿手好戏
地图是很多项目的需求,ECharts 的地图功能非常强大:
// 先注册地图(以中国为例)
// 需要从 echarts-map 或者官方地图数据获取 geoJson
echarts.registerMap('china', chinaGeoJson); // chinaGeoJson 是地图的 geojson 数据
var chart = echarts.init(document.getElementById('chart'));
var option = {
title: {
text: '2024年全国销售分布',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}<br/>销售额:{c} 万元'
},
visualMap: {
min: 0,
max: 5000,
left: 'left',
top: 'bottom',
text: ['高', '低'],
calculable: true,
inRange: {
color: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127']
}
},
series: [
{
name: '销售额',
type: 'map',
map: 'china',
roam: true, // 允许缩放和拖动
label: {
show: true
},
data: [
{ name: '广东省', value: 4500 },
{ name: '浙江省', value: 3800 },
{ name: '江苏省', value: 3600 },
{ name: '上海市', value: 3200 },
{ name: '北京市', value: 2800 },
{ name: '四川省', value: 1500 },
{ name: '湖北省', value: 1200 },
{ name: '山东省', value: 2000 }
]
}
]
};
chart.setOption(option);
地图效果非常震撼,不同省份用不同颜色深浅来表示数据大小,配上 visualMap 的图例,一眼就能看出哪些地区表现好。
常见问题与避坑指南
问题一:图表不显示怎么办?
最常见的两个原因:
- 容器没有设置宽高——ECharts 需要容器有明确的 width 和 height,不然它不知道画在哪
- CDN 链接失效或加载失败——检查网络,或者把 CDN 换成国内镜像(比如 bootcdn)
问题二:中文显示乱码?
确保你的 HTML 文件头部写了:
<meta charset="UTF-8">
并且编辑器保存时也是 UTF-8 编码。
问题三:图表在 tab 切换后变形了?
这是因为 ECharts 在不可见的容器里无法正常计算尺寸。解决办法:
// tab 切换时重新调用 resize
yourTabElement.addEventListener('shown', function() {
chart.resize();
});
问题四:数据量特别大怎么办?
如果数据有几千上万条,散点图可能会卡顿。ECharts 提供了 large 模式:
series: [{
type: 'scatter',
large: true, // 启用大数据优化
largeThreshold: 2000,
data: bigData
}]
开启后,ECharts 会自动使用 Canvas 渲染并做分片处理,流畅度会大幅提升。
最后——怎么继续深入学习?
ECharts 的配置项非常丰富,上面只是最基础的内容。官方文档非常完善,推荐你:
多逛官网示例:https://echarts.apache.org/examples/zh/index.html 这里有几百个现成的案例,你基本能看到所有能做的图表类型,直接复制代码改数据就能用。
学会配置项手册:https://echarts.apache.org/option.html 虽然看起来密密麻麻,但配合示例看,慢慢就熟悉了。
动手改别人的案例 不要只看不练,把你看到的案例复制下来,改改数据、换换颜色,慢慢你就知道每个配置项的作用了。
记住,学 ECharts 最快的方式就是边看边改——看到一个漂亮的图表,把它的代码扒下来,改改数据,你就能立刻理解它是怎么实现的。
好了,今天的入门指南就到这里。你已经可以从零开始做出柱状图、折线图、饼图、散点图、雷达图和地图了!接下来就是多动手、多看官方示例,慢慢地你就能在项目中信手拈来了。
加油!数据可视化这条路,越走越有趣。
