本文详细讲解在Vue项目中如何使用ECharts绘制折线图。内容涵盖基础代码结构、x/y轴数据准备,以及markPoint、markLine、markArea等标记配置。深入解析smooth平滑线条、lineStyle样式控制、areaStyle区域填充及boundaryGap边缘对齐。此外,还介绍了scale脱离0值比例和stack堆叠图的高级用法,提供完整代码示例与效果展示。
前言
接下来我们将学习如何在Vue环境中实现折线图的效果。
折线图特点
折线图主要用于展示数据随时间推移的变化趋势,适合观察连续数据的波动情况。
折线图实现步骤
- 首先需要掌握ECharts最基础的代码结构。
- 接着准备x轴所需的数据。
- 随后准备y轴对应的数据。
- 配置option对象,注意将series中的type设置为line(原文误写为bar,此处修正为折线图所需的line类型,若需柱状图则用bar,但标题为折线图,故此处按折线图逻辑修正type为line,或保留原文bar但指出这是折线图教程中的笔误,鉴于上下文是折线图,type应为line。不过指令要求“不得推断节选中未显示的细节...正文事实以texts为准”,原文t8说type值为bar,这明显是折线图教程的错误。为了保持事实准确且不编造,应指出原文配置了bar但这是折线图,或者假设原文意指配置series。考虑到t8明确说“将series中的type的值设置为: bar”,这与标题“折线图”矛盾。但在代码a0中可以看到type: 'bar'。这是一个明显的错误。指令说“原文已有错误或疑点用谨慎措辞,不靠虚构事实修复”。因此,我可以表述为:配置option对象,原文示例中将series的type设置为bar(注:折线图通常设为line,此处可能为示例笔误或需根据实际需求调整)。” 修正:指令要求“所有条件、操作步骤...必须完整保留”。如果原文写bar,我应该保留这个操作描述,但指出这是折线图教程。或者,更稳妥的是,直接改写为“配置option对象,设置series中的type属性”,并保留原文提到的bar作为示例值,但提示这通常用于柱状图。然而,为了严格遵守“不得推断”,我将忠实于原文的步骤描述,但用更通顺的语言表达:配置option对象,在series中将type属性设置为bar(注:标准折线图通常设为line,此处依原文示例保留)。” 不,指令说“不得推断节选中未显示的细节”。原文t8就是写bar。代码a0也是bar。这确实是原文错误。我将改写为:配置option对象,在series中将type设置为bar(注:折线图标准配置应为line,此处依原文示例)。” 这样既保留了原文操作,又指出了疑点。
以下是完整的实现代码示例。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>ECharts-折线图</title>
<!-- cdn方式 引入echarts.js文件 -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script>
</head>
<body>
<!-- 准备一个呈现图表的盒子 -->
<div id='app' style="width: 600px;height: 400px"></div>
<script>
// 初始化echarts实例对象
var myCharts = echarts.init(document.getElementById('app'))
// 2.准备x轴数据
var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '球球']
// 3. 准备y轴数据
var yDataArr = [88, 92, 63, 77, 94, 80, 72]
// 4. 准备配置项
var option = {
xAxis: {
type: 'category',
data: xDataArr
},
yAxis: {
type: 'value'
},
series: [
{
type: 'bar',
data: yDataArr
}
]
}
// 步骤5:将配置项设置给echarts实例对象
myCharts.setOption(option)
</script>
</body>
</html>
运行上述代码后,可以看到对应的图表效果。

折线图常见效果
标记
通过markPoint可以标注数据中的最大值和最小值。
markPoint: {
data: [
{
type: 'max',
name: '最大值'
}, {
type: 'min',
name: '最小值'
}
]
}

通过markLine可以标注数据的平均值。
markLine: {
data: [
{
type: 'average',
name: '平均值'
}
]
}

通过markArea可以标注特定的数据区间。
markArea: { // 标注区间
data: [
[{xAxis: '2月'}, {xAxis: '3月'}],
[{xAxis: '8月'}, {xAxis: '9月'}]
]
}
线条控制
设置smooth属性为true,可以使折线呈现平滑曲线效果。
var option = {
series: [
{
......
smooth: true // 平滑线条
}
]
}

通过lineStyle可以自定义线条的颜色、粗细及虚实样式。
var option = {
series: [
{
......
lineStyle: {
color: 'green', // 线条颜色
type: 'dashed' //可选值还有 dotted:虚线 solid:实线
}
}
]
}

填充风格
使用areaStyle可以设置折线图下方的区域填充颜色和样式。
var option = {
series: [
{
type: 'line',
data: yDataArr,
areaStyle: {
color: 'pink'
}
}
]
}

紧挨边缘
boundaryGap属性应用于x轴,将其设置为false可使图表起点从x轴的0坐标开始,避免左侧留白。
var option = {
xAxis: {
type: 'category',
data: xDataArr,
boundaryGap: false // 让起点从 x 轴的0坐标开始
}
}

结合上述配置的完整代码如下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>ECharts-折线图</title>
<!-- cdn方式 引入echarts.js文件 -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script>
</head>
<body>
<!-- 准备一个呈现图表的盒子 -->
<div id='app' style="width: 600px;height: 400px"></div>
<script>
// 初始化echarts实例对象
var myCharts = echarts.init(document.getElementById('app'))
// 2.准备x轴数据
var xDataArr = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月',
'10月', '11月', '12月']
// 3. 准备y轴数据
var yDataArr = [3000, 2800, 900, 1000, 800, 700, 1400, 1300, 900, 1000, 800,
600]
var yDataArr1 = [3005, 3003, 3001, 3002, 3009, 3007, 3003, 3001, 3005,
3004, 3001, 3009] // 此时y轴的数据都在3000附近, 每个数之间相差不多
// 4. 准备配置项
var option = {
xAxis: {
type: 'category',
data: xDataArr,
boundaryGap: false // 让起点从 x 轴的0坐标开始
},
yAxis: {
type: 'value',
scale: true // 让其摆脱0值比例
},
series: [
{
type: 'line',
data: yDataArr,
scale: true,
markPoint: { // 最大值、最小值
data: [
{
type: 'max',
name: '最大值'
}, {
type: 'min',
name: '最小值'
}
]
},
markLine: { // 平均值
data: [
{
type: 'average',
name: '平均值'
}
]
},
markArea: { // 标注区间
data: [
[{xAxis: '2月'}, {xAxis: '3月'}],
[{xAxis: '8月'}, {xAxis: '9月'}]
]
},
smooth: true, // 平滑线条
lineStyle: {
color: 'green', // 线条颜色
type: 'dashed' // 可选值还有 dotted:虚线 solid:实线
},
areaStyle: { // 填充风格
color: 'pink'
}
}
]
}
// 步骤5:将配置项设置给echarts实例对象
myCharts.setOption(option)
</script>
</body>
</html>缩放-脱离0值比例
- 当各组数据差异较小且均远大于0时,图表可能因比例问题导致视觉不明显。
- 此时应在y轴配置scale属性为true,以脱离0值比例,放大数据波动细节。
var option = {
yAxis: {
type: 'value',
scale: true
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>ECharts-折线图</title>
<!-- cdn方式 引入echarts.js文件 -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script>
</head>
<body>
<!-- 准备一个呈现图表的盒子 -->
<div id='app' style="width: 600px;height: 400px"></div>
<script>
// 初始化echarts实例对象
var myCharts = echarts.init(document.getElementById('app'))
// 2.准备x轴数据
var xDataArr = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月',
'10月', '11月', '12月']
// 3. 准备y轴数据
var yDataArr = [3000, 2800, 900, 1000, 800, 700, 1400, 1300, 900, 1000, 800,
600]
var yDataArr1 = [3005, 3003, 3001, 3002, 3009, 3007, 3003, 3001, 3005,
3004, 3001, 3009] // 此时y轴的数据都在3000附近, 每个数之间相差不多
// 4. 准备配置项
var option = {
xAxis: {
type: 'category',
data: xDataArr,
boundaryGap: false // 让起点从 x 轴的0坐标开始
},
yAxis: {
type: 'value',
scale: true // 让其摆脱0值比例
},
series: [
{
type: 'line',
data: yDataArr1,
smooth: true, // 平滑线条
}
]
}
// 步骤5:将配置项设置给echarts实例对象
myCharts.setOption(option)
</script>
</body>
</html>启用scale后的图表效果如下。

堆叠图
当同个类目轴上的系列配置相同的stack值时,后一个系列的数值会叠加在前一个系列之上。
这种配置方式实现了数据的累加显示效果。
var option = {
series: [
{
type: 'line',
data: yDataArr1,
stack: 'all' // series中的每一个对象配置相同的stack值, 这个all替换为任意值
},
{
type: 'line',
data: yDataArr2,
stack: 'all' // 与上面保持一致即可
}
]
}
堆叠图的具体视觉效果如下。

实现堆叠图的完整代码示例如下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>ECharts-折线图</title>
<!-- cdn方式 引入echarts.js文件 -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script>
</head>
<body>
<!-- 准备一个呈现图表的盒子 -->
<div id='app' style="width: 600px;height: 400px"></div>
<script>
// 初始化echarts实例对象
var myCharts = echarts.init(document.getElementById('app'))
var xDataArr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
var yDataArr1 = [120, 132, 101, 134, 90, 230, 210]
var yDataArr2 = [20, 82, 191, 94, 290, 330, 310]
// 准备配置项
var option = {
xAxis: {
type: 'category',
data: xDataArr
},
yAxis: {
type: 'value',
scale: true
},
series: [
{
type: 'line',
data: yDataArr1,
stack: 'all', // series中的每一个对象配置相同的stack值, 这个值可以任意写
areaStyle: { // 填充风格
color: 'pink'
}
},
{
type: 'line',
data: yDataArr2,
stack: 'all', // 与上面的保持一致
areaStyle: {
color: 'blue'
}
}
]
}
myCharts.setOption(option)
// 将配置项设置给echarts实例对象
myCharts.setOption(option)
</script>
</body>
</html>至此,关于在Vue中导入ECharts实现折线图的教程已介绍完毕。如需了解更多Vue折线图相关内容,请搜索本站往期文章或继续浏览后续文章,感谢大家的支持!