新手必看!一图读懂echarts图表制作全流程,从入门到精通

2026-11-13 0 阅读

在数据可视化领域,echarts 是一款非常流行的 JavaScript 图表库,它可以帮助开发者轻松地制作出各种精美的图表。对于新手来说,了解 echarts 的制作流程是一个循序渐进的过程。下面,我们就通过一张图,带你从入门到精通 echarts 图表制作。

入门阶段

1. 环境搭建

首先,你需要搭建一个适合开发 echarts 的环境。这包括:

  • 安装 Node.js 和 npm(Node.js 包管理器)
  • 创建一个 HTML 文件,引入 echarts.min.js 文件
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ECharts</title>
    <!-- 引入 ECharts 文件 -->
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
</head>
<body>
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
</body>
</html>

2. 基础图表

接下来,你可以尝试制作一些基础的图表,如柱状图、折线图、饼图等。以下是一个简单的柱状图示例:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    title: {
        text: 'ECharts 入门示例'
    },
    tooltip: {},
    legend: {
        data:['销量']
    },
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis: {},
    series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

进阶阶段

1. 交互式图表

在制作图表的过程中,你可以添加一些交互功能,如缩放、拖拽等。以下是一个添加了缩放功能的折线图示例:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    title: {
        text: 'ECharts 交互式图表示例'
    },
    tooltip: {},
    legend: {
        data:['销量']
    },
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis: {},
    series: [{
        name: '销量',
        type: 'line',
        data: [5, 20, 36, 10, 10, 20]
    }],
    dataZoom: [{
        type: 'slider',
        start: 0,
        end: 50
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

2. 高级图表

echarts 支持多种高级图表,如地图、散点图、K线图等。以下是一个地图图表示例:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    title: {
        text: 'ECharts 地图图表示例'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 100,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],           // 文本,默认为数值文本
        calculable: true
    },
    series: [{
        name: '销量',
        type: 'map',
        mapType: 'china',
        roam: true,
        label: {
            show: false
        },
        data: [
            {name: '北京',value: Math.round(Math.random() * 1000)},
            {name: '天津',value: Math.round(Math.random() * 1000)},
            {name: '上海',value: Math.round(Math.random() * 1000)},
            {name: '重庆',value: Math.round(Math.random() * 1000)},
            {name: '河北',value: Math.round(Math.random() * 1000)},
            {name: '山西',value: Math.round(Math.random() * 1000)},
            {name: '辽宁',value: Math.round(Math.random() * 1000)},
            {name: '吉林',value: Math.round(Math.random() * 1000)},
            {name: '黑龙江',value: Math.round(Math.random() * 1000)},
            {name: '江苏',value: Math.round(Math.random() * 1000)},
            {name: '浙江',value: Math.round(Math.random() * 1000)},
            {name: '安徽',value: Math.round(Math.random() * 1000)},
            {name: '福建',value: Math.round(Math.random() * 1000)},
            {name: '江西',value: Math.round(Math.random() * 1000)},
            {name: '山东',value: Math.round(Math.random() * 1000)},
            {name: '河南',value: Math.round(Math.random() * 1000)},
            {name: '湖北',value: Math.round(Math.random() * 1000)},
            {name: '湖南',value: Math.round(Math.random() * 1000)},
            {name: '广东',value: Math.round(Math.random() * 1000)},
            {name: '海南',value: Math.round(Math.random() * 1000)},
            {name: '四川',value: Math.round(Math.random() * 1000)},
            {name: '贵州',value: Math.round(Math.random() * 1000)},
            {name: '云南',value: Math.round(Math.random() * 1000)},
            {name: '陕西',value: Math.round(Math.random() * 1000)},
            {name: '甘肃',value: Math.round(Math.random() * 1000)},
            {name: '青海',value: Math.round(Math.random() * 1000)},
            {name: '台湾',value: Math.round(Math.random() * 1000)},
            {name: '内蒙古',value: Math.round(Math.random() * 1000)},
            {name: '广西',value: Math.round(Math.random() * 1000)},
            {name: '西藏',value: Math.round(Math.random() * 1000)},
            {name: '宁夏',value: Math.round(Math.random() * 1000)},
            {name: '新疆',value: Math.round(Math.random() * 1000)},
            {name: '香港',value: Math.round(Math.random() * 1000)},
            {name: '澳门',value: Math.round(Math.random() * 1000)}
        ]
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

精通阶段

1. 个性化图表

在精通阶段,你可以根据需求对图表进行个性化定制,如调整颜色、字体、布局等。以下是一个自定义样式的饼图示例:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    title: {
        text: 'ECharts 个性化图表示例',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        orient: 'vertical',
        left: 'left'
    },
    series: [
        {
            name: '访问来源',
            type: 'pie',
            radius: '50%',
            center: ['50%', '60%'],
            data: [
                {value: 1048, name: '搜索引擎'},
                {value: 735, name: '直接访问'},
                {value: 580, name: '邮件营销'},
                {value: 484, name: '联盟广告'},
                {value: 300, name: '视频广告'}
            ],
            emphasis: {
                itemStyle: {
                    shadowBlur: 10,
                    shadowOffsetX: 0,
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                }
            }
        }
    ]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

2. 动态数据

在实际应用中,你可能需要根据动态数据更新图表。以下是一个动态更新数据的折线图示例:

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据
var option = {
    title: {
        text: 'ECharts 动态数据图表示例'
    },
    tooltip: {},
    legend: {
        data:['销量']
    },
    xAxis: {
        data: []
    },
    yAxis: {},
    series: [{
        name: '销量',
        type: 'line',
        data: []
    }]
};

// 动态更新数据
function updateData() {
    var data = [];
    var xAxisData = [];
    for (var i = 0; i < 10; i++) {
        xAxisData.push('数据 ' + (i + 1));
        data.push(Math.round(Math.random() * 1000));
    }
    myChart.setOption({
        xAxis: {
            data: xAxisData
        },
        series: [{
            data: data
        }]
    });
}

// 每 2 秒更新一次数据
setInterval(updateData, 2000);

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

通过以上步骤,你就可以从入门到精通 echarts 图表制作了。希望这篇文章能帮助你更好地掌握 echarts,制作出更多精美的图表!

分享到: