Hey,新手小白你好呀!看到标题我就知道,你此刻大概率正盯着电脑屏幕发呆,想做个数据可视化图表,结果一搜“Echarts”,满屏的代码把你吓跑了。别慌,把那些复杂的理论先放一边。今天我不当那种“首先定义变量、其次引入库”的刻板老师,咱们就像朋友聊天一样,我把这层窗户纸给你捅破。我会带你从零开始,搭建环境,画出第一个柱状图和折线图,更重要的是,我会告诉你怎么解决那些让你想摔键盘的“配置项报错”。
准备好了吗?咱们这就开干。
先把“舞台”搭起来:你真的需要下载什么吗?
很多新手的第一反应是:“我要不要去下一个Node.js?要不要npm install echarts?”
停!打住!这是最大的误区。
对于零基础、只想快速看到效果的朋友来说,你完全不需要配置什么复杂的前端工程化环境(什么webpack、vite、npm,那是给专业前端开发用的)。你只需要一个记事本(或者VS Code,但我猜你现在可能还没有),和一个浏览器。
为什么这么说?因为Echarts本质就是一个JavaScript文件。你只需要在HTML里引用它,就能用。这就好比你想画画,不需要先自己炼铁造笔,直接从文具店买支笔就行。
我会给你展示两种最主流、最稳妥的引入方式,你选一个顺眼的就行。
方法一:CDN引入(最推荐新手)
这就像你在视频网站看视频,不需要下载视频文件,直接在线播放一样。我们直接从网上引用Echarts的库。
步骤:
- 在你的电脑上新建一个文件夹,比如叫
echarts-demo。 - 在里面新建一个文本文件,重命名为
index.html。 - 用记事本或者代码编辑器打开它。
代码长这样:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的第一个Echarts图表</title>
<!-- 这里就是引入Echarts的核心,从官方或CDN获取 -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
<style>
/* 给图表容器设个宽高,很重要!不然图表看不见 */
#main {
width: 800px;
height: 500px;
}
</style>
</head>
<body>
<!-- 给Echarts准备一个DOM容器 -->
<div id="main"></div>
<script>
// 下面就是核心JS代码,我们一会儿详细讲
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option = {
title: { text: '这是标题' },
xAxis: { type: 'category', data: ['周一', '周二', '周三'] },
yAxis: { type: 'value' },
series: [{
data: [120, 200, 150],
type: 'bar' // 先画个柱状图试试
}]
};
myChart.setOption(option);
</script>
</body>
</html>
- 双击打开这个
index.html,你会看到一个简单的柱状图。
成功了吗?恭喜你,你已经迈出了最难的一步!
方法二:本地下载(适合断网或追求稳定)
如果你担心CDN不稳定,或者公司有内网限制,可以下载。
- 去 Echarts官网 下载最新版的压缩包。
- 解压后,找到
dist文件夹,里面有个echarts.min.js。 - 把这个js文件复制到你的项目文件夹。
- 把上面的
<script src="...">改成<script src="echarts.min.js"></script>。
这两种方法,本质一样。我建议新手先用CDN,省事儿。
拆解“黑盒”:Echarts到底是怎么工作的?
你可能会问:“上面那坨代码是什么意思?” 别急,咱们用大白话拆解一下。
画一个Echarts图表,就三个步骤,缺一不可:
- 准备容器:在HTML里放一个
div,给它一个ID,比如id="main"。这就好比在墙上留了一块空白画布。 - 初始化实例:用JS找到这个div,告诉Echarts:“嘿,就在这儿画画!” 代码是
echarts.init(document.getElementById('main'))。 - 设置选项:这是最核心的部分,叫
option。它是个大对象,里面规定了标题、坐标轴、数据、颜色等等。最后调用myChart.setOption(option)把配置应用上去。
关键点来了:option 里的每一块配置,都对应着图表的一个部分。我们下面要讲的柱状图和折线图,主要修改的就是 option 里的内容。
实战一:绘制一个漂亮的柱状图
柱状图(Bar Chart)最适合用来比较不同类别的数据。比如:我们班同学的身高、某个月的销售额、不同游戏的日活用户数。
1. 基础柱状图
我们回到刚才的 index.html,把 <script> 里的代码替换成下面这个详细的版本。我加了注释,你逐行看:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>柱状图实战</title>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
<style>
#chart-bar {
width: 800px;
height: 500px;
border: 1px solid #ddd; /* 加个边框方便看范围 */
}
</style>
</head>
<body>
<h2>某网站一周访问人数(柱状图)</h2>
<div id="chart-bar"></div>
<script>
// 1. 初始化实例
var myChart = echarts.init(document.getElementById('chart-bar'));
// 2. 配置项 option
var option = {
// 标题组件
title: {
text: '本周访问量统计',
left: 'center', // 标题居中
textStyle: {
color: '#333',
fontSize: 18
}
},
// 提示框组件:鼠标悬停时显示的数据详情
tooltip: {
trigger: 'axis', // 触发方式为坐标轴
axisPointer: {
type: 'shadow' // 阴影指示器
}
},
// 图例组件:显示每个系列的名称
legend: {
data: ['访问量']
},
// 网格配置:控制直角坐标系内绘图网格大小
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true // 包含标签,防止标签被截断
},
// X轴配置
xAxis: {
type: 'category', // 类目轴,用于横坐标的文字
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
axisTick: { show: false }, // 去掉刻度线
axisLine: { lineStyle: { color: '#999' } } // 坐标轴线颜色
},
// Y轴配置
yAxis: {
type: 'value', // 值轴,用于数值
splitLine: { show: false } // 去掉网格线,更简洁
},
// 系列列表:每个系列通过 type 决定自己的图表类型
series: [{
name: '访问量',
type: 'bar', // 柱状图/条形图
data: [500, 800, 600, 900, 1100, 1500, 1300], // 数据
itemStyle: {
color: '#5470c6' // 柱子颜色
},
// 给柱子加个标签,显示数值
label: {
show: true,
position: 'top' // 标签在柱子顶部
}
}]
};
// 3. 渲染图表
myChart.setOption(option);
</script>
</body>
</html>
重点解析:
xAxis.type: 'category':这是分类轴。你的数据是“周一、周二…”这种文字,就用这个。yAxis.type: 'value':这是数值轴。Y轴上的数字是算出来的,用这个。series.type: 'bar':这里决定了画的是柱状图。记住,series是一个数组,你可以放多个系列。tooltip.trigger: 'axis':这行代码很重要!它让鼠标悬停时,显示一整列(一个X轴位置)的数据,而不是只显示一个点。label.show: true:让每个柱子上显示具体数值,更直观。
操作一下:把这段代码存成 bar.html,双击打开。看,一个标准的、带标题、带图例、带 tooltip、带数据标签的柱状图就出来了!
2. 柱状图进阶:分组柱状图和堆叠柱状图
很多时候,我们需要比较多个维度的数据。比如,不光看“访问量”,还要看“新用户数”和“老用户数”。
- 分组柱状图:多个柱子并排。
- 堆叠柱状图:多个柱子叠在一起,看总和。
分组柱状图代码改动:
只需要在 series 数组里加第二个对象,并确保 xAxis 和 yAxis 共用。
series: [
{
name: '新用户',
type: 'bar',
data: [200, 320, 280, 400, 500, 600, 550],
itemStyle: { color: '#91cc75' } // 绿色
},
{
name: '老用户',
type: 'bar',
data: [300, 480, 320, 500, 600, 900, 750],
itemStyle: { color: '#fac858' } // 黄色
}
]
堆叠柱状图代码改动:
只需要在每个 series 里加 stack: 'total'。
series: [
{
name: '新用户',
type: 'bar',
stack: 'total', // 关键!同一个 stack 名称的系列会堆叠
data: [200, 320, 280, 400, 500, 600, 550],
itemStyle: { color: '#91cc75' }
},
{
name: '老用户',
type: 'bar',
stack: 'total',
data: [300, 480, 320, 500, 600, 900, 750],
itemStyle: { color: '#fac858' }
}
]
自己动手试试:把上面的代码片段替换进刚才的 series 部分,看看效果。是不是很简单?
实战二:绘制折线图
折线图(Line Chart)最适合展示趋势,比如股票走势、气温变化、用户增长曲线。
1. 基础折线图
把 series 里的 type: 'bar' 改成 type: 'line' 就行。
series: [{
name: '访问量',
type: 'line', // 改为折线图
data: [500, 800, 600, 900, 1100, 1500, 1300],
// 折线图特有配置
smooth: true, // 平滑曲线,False 是直线
symbol: 'circle', // 数据点标记
symbolSize: 8, // 标记大小
lineStyle: {
width: 3, // 线条粗细
color: '#5470c6'
},
areaStyle: {
// 渐变填充区域,让图表更美观
color: {
type: 'linear',
x: 0, y: 0, x2: 0, y2: 1,
colorStops: [
{ offset: 0, color: 'rgba(84, 112, 198, 0.8)' },
{ offset: 1, color: 'rgba(84, 112, 198, 0.1)' }
]
}
}
}]
关键点:
smooth: true:让折线变得圆滑,更有美感。areaStyle:给折线下方填充颜色,这是Echarts很擅长的,能让图表看起来更专业。symbol:控制数据点上的小圆圈是否显示。
2. 多条折线图
和分组柱状图类似,在 series 数组里加多个对象即可。
series: [
{
name: '访问量',
type: 'line',
smooth: true,
data: [500, 800, 600, 900, 1100, 1500, 1300]
},
{
name: '评论量',
type: 'line',
smooth: true,
data: [50, 120, 80, 150, 200, 250, 220]
}
]
你会发现,xAxis 和 yAxis 不需要改,Echarts会自动处理多条线。
避坑指南:那些让你崩溃的“配置项报错”
作为新手,你一定会遇到报错。别慌,我帮你总结了最常见的几个坑。
坑一:图表不显示,控制台报“myChart is undefined”
原因:echarts.init() 失败。
常见错误:
- 容器ID写错了:
id="main"但 JS 里写的getElementById('box')。 - 容器没有宽高:这是最常见的错误!如果你的
#maindiv 没有设置width和height(或者父容器没有宽高),Echarts 画出来的东西是 0x0 大小的,你看不到,但它没报错。 解决:检查CSS,确保#main有明确的宽高,比如width: 800px; height: 500px;。
坑二:控制台报“xAxis is not defined”
原因:option 里的 xAxis 或 yAxis 配置错误。
常见错误:
- 类型不匹配:数据是数字,但
xAxis.type写成了'value'(应该用'category'放文字)。或者数据是文字,但xAxis.type写成了'value'。 解决:横坐标是文字(如“周一”、“北京”),就用'category';横坐标是数值(如时间戳、价格区间),就用'value'。 - 拼写错误:
xAxis写成了xaxis或XAxis。Echarts 配置项是大小写敏感的。
坑三:图表显示正常,但样式乱套(比如柱子特别细或特别粗)
原因:grid 或 dataZoom 配置问题。
常见错误:
- 柱子宽度:在
series里加barWidth: '60%'可以控制柱子占类目宽度的比例。默认可能比较细。 解决:尝试在series里加barWidth: '50%'或具体像素值如barWidth: 20。 - 网格留白:如果图表贴边,很难看。调整
grid的left、right、top、bottom。
坑四:中文乱码
原因:HTML 文件编码不是 UTF-8。
解决:在 <head> 里加上 <meta charset="UTF-8">。这几乎是必加的。
坑五:数据不更新,图表还是旧的
原因:多次调用 setOption 时,没有正确合并配置。
常见错误:第二次 setOption 时,只想改数据,但忘了传 series,结果整个 series 被清空了。
解决:Echarts 的 setOption 是合并模式。如果你想彻底替换配置,传 { merge: false }。但在更新数据时,通常只需要传 series 部分:
myChart.setOption({
series: [{
data: newData // 只更新数据
}]
});
