ECharts 数据可视化:从入门到精通 – wiki基地

ECharts 数据可视化:从入门到精通

ECharts,一个由百度团队开发的、开源的、基于 JavaScript 的数据可视化图表库,凭借其强大的功能、丰富的图表类型、高度的可定制性和良好的兼容性,已经成为 Web 数据可视化领域最受欢迎的工具之一。无论你是前端新手,还是经验丰富的开发者,ECharts 都能帮助你轻松创建各种交互式、美观的数据可视化图表。

本文将带你深入探索 ECharts 的世界,从基础概念到高级应用,一步步掌握 ECharts 的核心技术,助你成为数据可视化专家。

一、ECharts 入门:初识与配置

1.1 ECharts 是什么?

ECharts 是一个纯 JavaScript 的图表库,可以流畅地运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari 等)。它提供了直观、生动、可交互、可高度个性化定制的数据可视化图表。

ECharts 的主要特点:

  • 丰富的图表类型: ECharts 提供了常规的折线图、柱状图、散点图、饼图、K 线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
  • 强大的交互功能: ECharts 支持多种交互行为,如数据区域缩放、数据视图、值域漫游、图例切换、tooltip 提示、数据刷选等,让用户可以更深入地探索数据。
  • 高度可定制化: ECharts 提供了丰富的配置项,允许开发者对图表的各个方面进行精细化控制,包括颜色、样式、标签、动画等,轻松实现个性化需求。
  • 良好的兼容性: ECharts 兼容绝大部分浏览器,无需担心兼容性问题。
  • 活跃的社区: ECharts 拥有庞大的用户群体和活跃的社区,可以方便地获取帮助和交流经验。

1.2 安装与引入 ECharts

有多种方式可以引入 ECharts:

  1. CDN 引入:

    html
    <script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>

    这是最简单快捷的方式,直接通过 CDN 链接引入 ECharts。

  2. npm 安装(推荐):

    bash
    npm install echarts --save

    然后在你的 JavaScript 文件中引入:

    javascript
    import * as echarts from 'echarts';

    这种方式更适合于模块化开发,方便管理项目依赖。

  3. 下载源码:
    你可以从 ECharts 的官方网站或 GitHub 仓库下载源码,然后手动引入到你的项目中。

1.3 创建第一个 ECharts 图表

让我们从一个简单的例子开始,创建一个柱状图:

“`html





ECharts 示例






“`

代码解析:

  1. <div id="main" ...> 为 ECharts 图表准备一个 DOM 容器,需要指定宽度和高度。
  2. echarts.init(dom) 初始化一个 ECharts 实例,传入 DOM 容器。
  3. option 图表的配置项和数据。
    • title: 图表标题。
    • tooltip: 提示框组件。
    • legend: 图例组件。
    • xAxis: x 轴配置。
    • yAxis: y 轴配置。
    • series: 系列列表。每个系列通过 type 决定自己的图表类型。
  4. myChart.setOption(option) 使用配置项和数据渲染图表。

运行这段代码,你将看到一个简单的柱状图。

二、ECharts 核心概念:深入理解配置项

ECharts 的强大之处在于其灵活的配置项。option 对象是 ECharts 的核心,它包含了图表的所有配置信息。下面我们深入了解一些常用的配置项。

2.1 series(系列)

series 是 ECharts 中最重要的配置项之一,它定义了图表的数据和类型。每个系列可以是一个对象或一个数组。

  • type 图表类型,如 'bar'(柱状图)、'line'(折线图)、'pie'(饼图)、'scatter'(散点图)等。
  • name 系列名称,用于 tooltip 和 legend 的显示。
  • data 系列数据。数据格式根据图表类型的不同而有所差异。
  • itemStyle 图形样式。
    • color: 图形颜色。
    • borderColor: 边框颜色。
    • borderWidth: 边框宽度。
  • label 图形上的文本标签。
    • show: 是否显示标签。
    • position: 标签位置。
    • formatter: 标签内容格式器。
  • emphasis 高亮状态的配置。
    • itemStyle: 高亮时的图形样式。
    • label: 高亮时的标签样式。
  • markPoint 标记点。
    • data: 标记点数据,可以标记最大值、最小值等。
  • markLine 标记线。
    • data: 标记线数据,可以标记平均值等。
  • encode: 可以将data中指定的列映射到 visualMap 中的维度。

2.2 xAxis 和 yAxis(坐标轴)

xAxisyAxis 分别表示 x 轴和 y 轴。

  • type 坐标轴类型。
    • 'value':数值轴,适用于连续数据。
    • 'category':类目轴,适用于离散的类目数据。
    • 'time':时间轴,适用于连续的时序数据。
    • 'log':对数轴。
  • name 坐标轴名称。
  • data 类目数据(type: 'category' 时使用)。
  • axisLabel 坐标轴刻度标签。
    • formatter: 标签内容格式器。
  • axisLine 坐标轴轴线。
    • lineStyle: 轴线样式。
  • axisTick 坐标轴刻度。
  • splitLine 坐标轴分隔线。

2.3 title(标题)

  • text 主标题文本。
  • subtext 副标题文本。
  • lefttoprightbottom 标题位置。

2.4 legend(图例)

  • data 图例的数据,通常是 series 中的 name 数组。
  • lefttoprightbottom 图例位置。
  • orient 图例列表的布局朝向, 可以是'horizontal''vertical'.
  • selected: 图例选中状态表。

2.5 tooltip(提示框)

  • trigger 触发类型。
    • 'item':数据项图形触发。
    • 'axis':坐标轴触发。
    • 'none':不触发。
  • formatter 提示框内容格式器。

2.6 toolbox(工具栏)

  • feature: 各工具配置项。
    • saveAsImage: 保存为图片。
    • restore: 配置项还原。
    • dataView: 数据视图。
    • dataZoom: 数据区域缩放。
    • magicType: 动态类型切换

2.7 grid(直角坐标系内绘图网格)

  • lefttoprightbottom grid 组件离容器左、上、右、底的距离。
  • containLabel grid 区域是否包含坐标轴的刻度标签。

2.8 visualMap (视觉映射组件)

visualMap 是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)。

  • type: 组件类型。
    • 'continuous':连续型。
    • 'piecewise':分段型。
  • minmax: 定义域的最小值、最大值。
  • calculable: 是否显示拖拽用的手柄。
  • inRange: 定义 在选中范围中 的视觉元素。
  • outOfRange: 定义 在选中范围外 的视觉元素。

2.9 dataZoom(数据区域缩放组件)

dataZoom 组件用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。

  • type: 组件类型。
    • 'inside':内置型数据区域缩放组件。
    • 'slider':滑动条型数据区域缩放组件。
  • startend: 数据窗口范围的起始和结束百分比。
  • xAxisIndexyAxisIndex: 控制 DataZoom 组件进行的数据过滤使用的 x 轴或 y 轴。

三、ECharts 高级应用:进阶技巧与实战

掌握了 ECharts 的基本概念和配置项后,我们可以进一步探索更高级的应用。

3.1 动态数据更新

ECharts 支持动态更新数据,这使得图表可以实时反映数据的变化。

“`javascript
// 假设我们有一个函数可以获取最新的数据
function fetchData() {
// … 获取数据的逻辑 …
return newData;
}

// 定时更新图表
setInterval(function () {
var newData = fetchData();
myChart.setOption({
series: [{
data: newData
}]
});
}, 1000); // 每秒更新一次
“`

通过 setInterval 定时器,我们可以定期获取新数据,并使用 myChart.setOption() 更新图表。

3.2 事件处理与交互

ECharts 提供了丰富的事件,可以监听用户的交互行为,如点击、鼠标悬停、数据区域缩放等。

javascript
myChart.on('click', function (params) {
// params 包含了点击事件的信息
console.log(params);
// ... 处理点击事件的逻辑 ...
});

myChart.on() 方法用于绑定事件处理函数。params 参数包含了事件的相关信息,如点击的数据项、组件类型、事件类型等。

3.3 多图表联动

ECharts 可以实现多个图表之间的联动,例如,一个图表的数据区域缩放会影响另一个图表的显示。

“`javascript
// 初始化两个图表
var chart1 = echarts.init(document.getElementById(‘chart1’));
var chart2 = echarts.init(document.getElementById(‘chart2’));

// 绑定 dataZoom 事件
chart1.on(‘dataZoom’, function (params) {
chart2.dispatchAction({
type: ‘dataZoom’,
start: params.start,
end: params.end
});
});

chart2.on(‘dataZoom’, function (params) {
chart1.dispatchAction({
type: ‘dataZoom’,
start: params.start,
end: params.end
});
});

// 使用 dispatchAction 触发其他图表的 action
echarts.connect([chart1, chart2]);
“`
以上两种方法都可以实现图表联动。

3.4 自定义主题

ECharts 允许自定义主题,可以改变图表的整体风格。

“`javascript
// 定义一个主题对象
var myTheme = {
color: [‘#c23531′,’#2f4554’, ‘#61a0a8’, ‘#d48265’, ‘#91c7ae’,’#749f83′, ‘#ca8622’, ‘#bda29a’,’#6e7074′, ‘#546570’, ‘#c4ccd3’],
// … 其他主题配置 …
};

// 应用主题
var myChart = echarts.init(document.getElementById(‘main’), myTheme);
“`

3.5 使用 ECharts GL 进行 3D 可视化

ECharts GL 是 ECharts 的扩展,提供了 3D 图表和地球可视化功能。

“`html



“`

然后就可以使用 ECharts GL 提供的 series 类型,如 'bar3D''scatter3D''map3D' 等创建 3D 图表。

3.6 使用 dataset 管理数据 (Echarts 4+)

dataset 组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以自由指定数据到视觉的映射。这在不少场景下能带来使用上的方便。
javascript
var option = {
dataset: {
// 提供一份数据。
source: [
['product', '2015', '2016', '2017'],
['Matcha Latte', 43.3, 85.8, 93.7],
['Milk Tea', 83.1, 73.4, 55.1],
['Cheese Cocoa', 86.4, 65.2, 82.5],
['Walnut Brownie', 72.4, 53.9, 39.1]
]
},
// 声明一个 X 轴,类目轴(category)。默认情况下,类目轴对应到 dataset 第一列。
xAxis: {type: 'category'},
// 声明一个 Y 轴,数值轴。
yAxis: {},
// 声明多个 bar 系列,默认情况下,每个系列会自动对应到 dataset 的每一列。
series: [
{type: 'bar'},
{type: 'bar'},
{type: 'bar'}
]
};

四、总结与展望

本文详细介绍了 ECharts 数据可视化的各个方面,从入门到精通,涵盖了 ECharts 的基本概念、配置项、高级应用以及实战技巧。

ECharts 是一个功能强大、易于使用的 JavaScript 图表库,它可以帮助你轻松创建各种美观、交互式的数据可视化图表。希望本文能帮助你更好地理解和使用 ECharts,在数据可视化的道路上更进一步。

未来展望:

  • 更丰富的图表类型: ECharts 社区正在不断开发新的图表类型,满足更多样化的可视化需求。
  • 更强大的性能: ECharts 将持续优化性能,支持更大规模的数据可视化。
  • 更智能的交互: ECharts 将探索更智能的交互方式,提升用户体验。

相信 ECharts 会在数据可视化领域发挥越来越重要的作用,为我们带来更精彩的数据呈现方式。 让我们一起期待 ECharts 的未来!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部