数据可视化 · ECharts · D3.js

数据可视化选型指南:ECharts vs D3.js

📅 2026-04-28 ⏱ 约 7 分钟
做数据可视化时,ECharts 和 D3.js 是两个绕不开的选择。一个配置简单上手快,一个自由灵活可定制。到底怎么选?

一句话总结

ECharts 是一套开箱即用的图表库——传个配置对象,图表就出来了,适合快速交付。

D3.js 是一套可视化底层引擎——它给你数据绑定和 DOM 操作工具,具体画什么、怎么交互,全得自己写,上限极高但下限也极低(门槛高)。

类比:ECharts 是「用 PPT 做图表」,D3 是「用 Canvas 从零画」——前者快,后者自由。

核心区别对比

核心指标对比
抽象层级高层封装,配置即用底层引擎,自己实现一切
学习曲线平缓,1–2 天入门陡峭,2–4 周入门
体积(min)~800KB(全量),可按需引入~100KB(核心),按需加模块
渲染方式Canvas + SVG(自动切换)SVG 为主,Canvas 需自己实现
交互能力内置丰富(tooltip、zoom、brush)完全自由,全部手写
浏览器兼容IE9+、现代浏览器IE9+(部分功能需 polyfill)
事件处理内置事件系统自己绑定 DOM 事件

ECharts 适用场景

一个最基础的 ECharts 图表:

echarts 示例
// 初始化 + 配置,两步搞定
const chart = echarts.init(document.getElementById('chart'))
chart.setOption({
  xAxis: { type: 'category', data: ['周一','周二','周三'] },
  yAxis: { type: 'value' },
  series: [{
    type: 'bar',
    data: [120, 200, 150],
    itemStyle: { color: '#00f0ff' }
  }]
})

D3.js 适用场景

D3 的核心思路是「数据绑定 DOM」:

d3 数据绑定示例
// 数据绑定 + enter/update/exit 三阶段
const data = [120, 200, 150]
const bars = d3.select('svg')
  .selectAll('rect')
  .data(data)

bars.enter()
  .append('rect')
  .attr('x', (d, i) => i * 40)
  .attr('height', d => d)
  .attr('fill', '#00f0ff')
D3 的 enter/update/exit 是核心概念,理解了这个才算真正入门 D3。

我的选型建议

场景推荐
业务后台 / 管理端报表✅ ECharts
产品 Demo / 快速验证✅ ECharts
对外展示 / 官网数据大屏✅ ECharts(或 ECharts + 定制主题)
科研论文插图✅ D3.js
高度定制化交互图表✅ D3.js
想深入理解可视化原理✅ D3.js
团队技术栈以 Vue/React 为主✅ ECharts(有官方 wrapper)

学习资源推荐

如果你是产品经理,建议先学 ECharts 到能读懂配置的程度,有时间再深入了解 D3 的数据绑定思想。