ECharts 教程(一文讲透)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言:走进 ECharts 教程的世界

在数据可视化领域,ECharts 以其丰富的图表类型和强大的交互功能,成为开发者展示数据故事的首选工具。无论是编程初学者还是中级开发者,通过本教程都能快速掌握 ECharts 的核心能力。本文以“ECharts 教程”为主线,通过循序渐进的讲解、形象的比喻和实际案例,帮助读者从零构建专业的数据可视化项目。


环境搭建:ECharts 教程的第一步

方法 1:通过 CDN 引入

ECharts 的使用门槛极低。对于编程新手,最简单的入门方式是直接通过 CDN 引入 JavaScript 文件:

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8">  
    <title>ECharts 教程:第一个图表</title>  
    <!-- 引入 ECharts 核心库 -->  
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js"></script>  
</head>  
<body>  
    <div id="chart" style="width: 600px; height: 400px;"></div>  
    <script>  
        // 初始化图表容器  
        var chart = echarts.init(document.getElementById('chart'));  
        // 配置数据和样式  
        var option = {  
            title: { text: '我的第一个图表' },  
            xAxis: { data: ['A', 'B', 'C'] },  
            yAxis: {},  
            series: [{  
                name: '示例',  
                type: 'bar',  
                data: [10, 20, 30]  
            }]  
        };  
        // 渲染图表  
        chart.setOption(option);  
    </script>  
</body>  
</html>  

方法 2:通过 NPM 安装

对于熟悉前端工程化的开发者,可以通过 NPM 安装 ECharts:

npm install echarts --save  

安装后在项目中引入:

import * as echarts from 'echarts';  

基础图表类型:从柱状图到折线图的构建

柱状图:用高度说话

柱状图通过垂直或水平的条形展示数据差异,适合比较不同类别的数值。例如,假设我们要比较三个城市的人口数量:

var option = {  
    xAxis: {  
        type: 'category',  
        data: ['北京', '上海', '广州']  
    },  
    yAxis: { type: 'value' },  
    series: [{  
        type: 'bar',  
        data: [2154, 2415, 1868],  
        itemStyle: { color: '#5470c6' } // 设置颜色  
    }]  
};  

比喻:
柱状图就像一群站在不同高度的士兵,每个士兵的身高代表一个城市的数值,一眼就能看出谁更高大威武。

折线图:追踪数据趋势

折线图通过连接数据点的线条展示变化趋势,适用于时间序列数据。例如,展示某产品月销量变化:

var option = {  
    xAxis: { type: 'category', data: ['Jan', 'Feb', 'Mar'] },  
    yAxis: { type: 'value' },  
    series: [{  
        type: 'line',  
        data: [120, 132, 101],  
        smooth: true // 开启平滑曲线  
    }]  
};  

关键点:

  • smooth 属性让折线更流畅,适合表现连续变化。
  • 通过 symbol 属性可自定义数据点形状(如圆形、菱形)。

数据处理:让图表“吃”懂数据

数据格式规范

ECharts 的数据源通常为数组或对象数组。例如,饼图需要数据项包含 valuename

// 饼图数据示例  
series: [{  
    type: 'pie',  
    data: [  
        { value: 400, name: '苹果' },  
        { value: 335, name: '香蕉' },  
        { value: 310, name: '橙子' }  
    ]  
}]  

数据转换技巧

当原始数据需要预处理时,可使用 transform 属性。例如,将多列数据合并为单列:

var option = {  
    dataset: {  
        source: [  
            ['产品', '销量', '成本'],  
            ['A', 120, 80],  
            ['B', 150, 90]  
        ]  
    },  
    xAxis: { type: 'category' },  
    yAxis: {},  
    series: [{  
        type: 'bar',  
        encode: {  
            x: '产品',  
            y: '销量' // 指定显示销量列  
        }  
    }]  
};  

进阶功能:交互与动态更新

响应式交互

通过 tooltiplegend 实现动态交互:

var option = {  
    tooltip: { trigger: 'item' }, // 鼠标悬停显示详细信息  
    legend: {  
        data: ['销量', '成本'], // 右侧图例开关  
        selected: { '成本': false } // 默认隐藏成本  
    },  
    series: [{  
        type: 'line',  
        name: '销量',  
        data: [120, 132, 101]  
    }, {  
        type: 'line',  
        name: '成本',  
        data: [80, 85, 78]  
    }]  
};  

动态数据更新

通过 setOption 方法实时更新图表:

// 每秒更新随机数据  
setInterval(function () {  
    chart.setOption({  
        series: [{  
            data: Math.random() * 200  
        }]  
    });  
}, 1000);  

实战案例:气象数据可视化

需求分析

假设需要展示某城市一周内的气温变化,同时叠加降水量数据。

实现步骤

  1. HTML 容器
<div id="weather-chart" style="width: 800px; height: 500px;"></div>  
  1. 配置双 Y 轴
var option = {  
    title: { text: '一周天气趋势' },  
    xAxis: {  
        type: 'category',  
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']  
    },  
    yAxis: [  
        { type: 'value', name: '温度 (℃)' }, // 左侧 Y 轴  
        {  
            type: 'value',  
            name: '降水量 (mm)',  
            position: 'right' // 右侧 Y 轴  
        }  
    ],  
    series: [{  
        name: '温度',  
        type: 'line',  
        yAxisIndex: 0, // 绑定左侧 Y 轴  
        data: [22, 25, 28, 30, 27, 24, 21]  
    }, {  
        name: '降水量',  
        type: 'bar',  
        yAxisIndex: 1, // 绑定右侧 Y 轴  
        data: [0, 5, 10, 0, 15, 8, 0]  
    }]  
};  
  1. 最终效果
    通过双 Y 轴设计,用户可同时观察温度与降水量的关联性。

结论:从 ECharts 教程到数据叙事大师

通过本文的 ECharts 教程,读者已掌握了从环境搭建到复杂图表构建的完整流程。无论是基础图表的快速上手,还是进阶功能的深度探索,ECharts 都提供了灵活的配置选项和强大的交互能力。

下一步建议:

  • 探索更多图表类型(如热力图、桑基图)
  • 结合后端数据接口实现动态数据加载
  • 使用 ECharts GL 实现三维可视化

数据可视化不仅是技术的展现,更是故事的讲述。希望本教程能成为你探索数据世界的起点!

最新发布