ECharts 5 图表配置与异步加载实战指南

作者:木棉时间:2026-10-26 08:05:37浏览:420

本文详解 ECharts 5 的核心特性,重点介绍从 charts/charts 按需引入模块以优化打包体积的方法。深入解析配置项中绝对定位、颜色主题及样式设置的使用规范,并演示如何通过 showLoading 实现数据异步加载时的用户提示,结合数据集组件提升数据管理效率。

ECharts

近年来,数据可视化领域发展迅猛。开发者对可视化工具的期待已超越基础图表生成,转而追求更强的交互体验、更高的性能表现以及更完善的数据处理能力。

chart.setOption({
    color: [
        '#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83',
        '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'
    ],
    // ...
});

Apache ECharts 始终致力于为开发者提供便捷的方式,以构建灵活且丰富的视觉作品。在最新的 Apache ECharts 5 版本中,团队重点强化了图表的叙事能力,旨在帮助开发者更直观地讲述数据背后的故事。

var themeEC4 = {
    color: [
        '#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83',
        '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'
    ]
};
var chart = echarts.init(dom, themeEC4);
chart.setOption(/* ... */);

ECharts

若此前使用 import“charts/lib/chart/bar”,新接口则对应从“charts/charts”导入{BarChart};为辅助开发者明确配置项所需的模块,新版示例编辑页面新增了生成按需导入代码的功能。在示例编辑页面的完整代码选项卡下选择按需导入后,可查看所需导入的模块及相关代码。多数情况下,建议优先使用这组新的按需接口,它能充分利用打包工具的树摇功能,有效解决命名空间冲突,并防止内部结构暴露。若仍使用 CommonJS 模块编写,旧方法依然受支持:

import * as echarts from 'echarts/core';
import { BarChart } from 'echarts/charts';
import { GridComponent } from 'echarts/components';
// 注意,新的接口中默认不再包含 Canvas 渲染器,需要显示引入,如果需要使用 SVG 渲染模式则使用 SVGRenderer
import { CanvasRenderer } from 'echarts/renderers';
echarts.use([BarChart, GridComponent, CanvasRenderer]);
// 创建 echarts 实例。
var dom = document.getElementById('dom-id');
var chart = echarts.init(dom);
// 用 option 描述 `数据`、`数据如何映射成图形`、`交互行为` 等。
// option 是个大的 JavaScript 对象。
var option = {
    // option 每个属性是一类组件。
    legend: {...},
    grid: {...},
    tooltip: {...},
    toolbox: {...},
    dataZoom: {...},
    visualMap: {...},
    // 如果有多个同类组件,那么就是个数组。例如这里有三个 X 轴。
    xAxis: [
        // 数组每项表示一个组件实例,用 type 描述“子类型”。
        {type: 'category', ...},
        {type: 'category', ...},
        {type: 'value', ...}
    ],
    yAxis: [{...}, {...}],
    // 这里有多个系列,也是构成一个数组。
    series: [
        // 每个系列,也有 type 描述“子类型”,即“图表类型”。
        {type: 'line', data: [['AA', 332], ['CC', 124], ['FF', 412], ... ]},
        {type: 'line', data: [2231, 1234, 552, ... ]},
        {type: 'line', data: [[4, 51], [8, 12], ... ]}
    }]
};
// 调用 setOption 将 option 输入 echarts,然后 echarts 渲染图表。
chart.setOption(option);

ECharts 用户通过选项(option)描述图表需求,涵盖数据来源、图表类型、视觉样式、包含组件及交互行为。简言之,选项定义了数据如何映射为图形及交互行为。

myChart.setOption({
    series : [
        {
            name: '访问来源',
            type: 'pie',
            radius: '55%',
            data:[
                {value:235, name:'视频广告'},
                {value:274, name:'联盟广告'},
                {value:310, name:'邮件营销'},
                {value:335, name:'直接访问'},
                {value:400, name:'搜索引擎'}
            ]
        }
    ]
})

多数组件和系列支持通过上/右/下/左/宽/高进行绝对定位,该方式类似于 CSS 绝对定位,基于 ECharts 容器 DOM 节点。各属性值可以是:

itemStyle: {
    // 阴影的大小
    shadowBlur: 200,
    // 阴影水平方向上的偏移
    shadowOffsetX: 0,
    // 阴影垂直方向上的偏移
    shadowOffsetY: 0,
    // 阴影颜色
    shadowColor: 'rgba(0, 0, 0, 0.5)'
}

绝对数值(如底部:54 表示距容器底部边界 54 像素),或基于容器宽高百分比(如右:“20%”表示距容器右边界距离为容器宽度的 20%)。如图所示,可设置轴网构件(即矩形坐标系底板)的左、右、高、底位置。

ECharts

更改全局样式最简便的方式是使用颜色主题。例如在示例集合中,可选择“主题”直接预览效果。ECharts 4 内置“亮”和“暗”及默认主题,使用方式如下:

var chart = echarts.init(dom, 'light');
$.getJSON('xxx/xxx/vintage.json', function (themeJSON) {
    echarts.registerTheme('vintage', JSON.parse(themeJSON))
    var chart = echarts.init(dom, 'vintage');
});

直接样式设置是常见配置手段。在 ECharts 选项的 itemStyle、lineStyle、areaStyle、label 等处,可直接设置图形元素的颜色、线宽、点大小、标签文本及样式。通常所有 ECharts 系列和组件均遵循这些命名约定,尽管 itemStyle、label 等可能出现在不同图表和组件的不同位置。

option = {
    series: {
        type: 'scatter',
        itemStyle: {
            // 普通样式。
            normal: {
                // 点的颜色。
                color: 'red'
            },
            // 高亮样式。
            emphasis: {
                // 高亮时点的颜色。
                color: 'blue'
            }
        },
        label: {
            // 普通样式。
            normal: {
                show: true,
                // 标签的文字。
                formatter: 'This is a normal label.'
            },
            // 高亮样式。
            emphasis: {
                show: true,
                // 高亮时标签的文字。
                formatter: 'This is a emphasis label.'
            }
        }
    }
}

异步加载

var myChart = echarts.init(document.getElementById('main'));
$.get('data.json').done(function (data) {
    myChart.setOption({
        title: {
            text: '异步数据加载示例'
        },
        tooltip: {},
        legend: {
            data:['销量']
        },
        xAxis: {
            data: data.categories
        },
        yAxis: {},
        series: [{
            name: '销量',
            type: 'bar',
            data: data.data
        }]
    });
});

若数据加载耗时较长,画布上显示的空坐标轴易让用户误以为出错。因此需加载动画提示用户数据正在加载中。ECharts 默认提供简单加载动画,只需调用 showLoading 方法显示,加载完成后调用 hideLoading 隐藏即可。

ECharts

该方式直观易懂,适用于为特殊图表类型定制特定数据类型。但其缺点在于需经过数据处理过程,将数据分割并分配给各系列(及类别轴),且不利于多系列共享数据,也不利于基于原始数据的图表类型和系列映射排列。为此,ECharts 4 提供了单独声明数据的数据集组件,带来以下优势:它贴近常见数据可视化思维模式:(I)提供数据,(II)指定数据到视觉的映射,从而形成图表。数据与其他配置分离,数据常变而配置不变,便于单独管理。数据可被多个系列或组件重用,在大数据量场景下无需为每个系列创建数据。此外,它支持二维数组、对象数组等常见数据格式,一定程度上避免用户进行格式转换。

以上为 ECharts 图表使用及异步加载特性的详细内容,更多关于 ECharts 图表使用及异步加载特性的资料请关注本站其它相关文章!

作者最新文章