插件窝 干货文章 移动端图表库选择:uChart和eCharts堆叠柱状图如何实现相同效果?

移动端图表库选择:uChart和eCharts堆叠柱状图如何实现相同效果?

堆叠 柱状 实现 系列 798    来源:    2025-03-25

uChart与ECharts堆叠柱状图实现对比

核心差异概述

uChart和ECharts虽然都能实现堆叠柱状图效果,但两者在实现方式和功能特性上有明显差异:

  • ECharts:功能全面的大型可视化库,堆叠功能成熟
  • uChart:轻量级图表库,针对移动端优化,但堆叠功能相对简单

ECharts实现堆叠柱状图

基础实现代码

option = {
  tooltip: {
    trigger: 'axis',
    axisPointer: { type: 'shadow' }
  },
  legend: {
    data: ['系列1', '系列2', '系列3']
  },
  xAxis: {
    type: 'category',
    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      name: '系列1',
      type: 'bar',
      stack: 'total',  // 关键堆叠配置
      data: [120, 132, 101, 134, 90, 230, 210]
    },
    {
      name: '系列2',
      type: 'bar',
      stack: 'total',  // 相同stack值实现堆叠
      data: [220, 182, 191, 234, 290, 330, 310]
    },
    {
      name: '系列3',
      type: 'bar',
      stack: 'total',  // 相同stack值实现堆叠
      data: [150, 232, 201, 154, 190, 330, 410]
    }
  ]
};

ECharts堆叠特性

  • 支持多组堆叠(不同stack值)
  • 丰富的堆叠交互(tooltip显示各层值)
  • 支持百分比堆叠
  • 可配置堆叠顺序

uChart实现堆叠柱状图

基础实现代码

const option = {
  series: [
    {
      name: '系列1',
      type: 'bar',
      stack: true,  // 开启堆叠
      data: [120, 132, 101, 134, 90, 230, 210]
    },
    {
      name: '系列2',
      type: 'bar',
      stack: true,  // 开启堆叠
      data: [220, 182, 191, 234, 290, 330, 310]
    },
    {
      name: '系列3',
      type: 'bar',
      stack: true,  // 开启堆叠
      data: [150, 232, 201, 154, 190, 330, 410]
    }
  ],
  categories: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
};

uChart堆叠特性

  • 堆叠配置更简单
  • 移动端性能优化更好
  • 功能相对简化,不支持多组堆叠
  • 交互效果较少

实现相同效果的关键点

  1. 数据格式:两者都要求系列数据长度一致
  2. 堆叠标识
    • ECharts使用stack: 'groupName'
    • uChart使用stack: true
  3. 移动端适配
    • uChart默认针对移动端优化
    • ECharts需要额外配置responsive: true和媒体查询

选择建议

  • 选择ECharts当需要:

    • 复杂堆叠需求(多组堆叠、百分比堆叠)
    • 丰富的交互效果
    • PC和移动端都需要支持
  • 选择uChart当需要:

    • 纯粹的移动端应用
    • 对性能要求极高
    • 简单的堆叠展示需求

性能优化提示

对于移动端,无论选择哪个库,都建议: 1. 合理设置动画选项 2. 避免过多数据点(移动端建议不超过50个数据点) 3. 对于uChart,可以利用其内置的按需渲染特性 4. 对于ECharts,使用large: true选项处理大数据量