简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索

活动公告

通知:为庆祝网站一周年,将在5.1日与5.2日开放注册,具体信息请见后续详细公告
04-22 00:04
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

从基础表格到炫酷可视化图表 echarts如何彻底改变传统数据展示方式让那些原本枯燥的数据讲述更加生动有趣的故事

SunJu_FaceMall

3万

主题

1158

科技点

3万

积分

白金月票

碾压王

积分
32796

立华奏

发表于 2025-8-22 16:00:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言:数据可视化的新时代

在信息爆炸的今天,数据已成为企业和组织决策的重要依据。然而,原始数据本身往往是枯燥、难以理解的。如何将这些枯燥的数据转化为直观、易于理解的信息,成为数据分析师和开发人员面临的重要挑战。ECharts(Enterprise Charts)作为一款由百度开源的、功能强大的数据可视化库,正在彻底改变传统的数据展示方式,让数据能够讲述更加生动有趣的故事。

传统数据展示方式的局限性

传统数据展示主要依赖于基础表格和简单图表,这些方式存在明显局限性:

1. 信息密度低:传统表格只能展示有限的数据维度,难以呈现复杂的数据关系。
2. 视觉吸引力弱:静态的表格和基础图表缺乏视觉冲击力,无法吸引观众的注意力。
3. 交互性差:传统展示方式通常缺乏交互功能,用户无法自由探索数据。
4. 故事性不足:难以通过传统表格和图表构建连贯的数据叙事,无法有效传达数据背后的洞察。

例如,一份销售数据表格可能如下所示:
  1. | 月份 | 产品A | 产品B | 产品C | 总销售额 |
  2. |------|-------|-------|-------|----------|
  3. | 1月  | 12000 | 15000 | 8000  | 35000    |
  4. | 2月  | 15000 | 18000 | 9000  | 42000    |
  5. | 3月  | 18000 | 20000 | 12000 | 50000    |
复制代码

这样的表格虽然准确,但无法直观地展示销售趋势、产品比较或季节性变化等关键信息。

ECharts简介及其优势

ECharts是一款基于JavaScript的开源可视化库,由百度团队开发并维护。它提供了丰富的图表类型和强大的交互功能,能够帮助开发者轻松创建各种复杂的数据可视化效果。

ECharts的主要优势包括:

1. 丰富的图表类型:支持折线图、柱状图、饼图、散点图、地图、热力图等多种图表类型。
2. 强大的交互功能:支持数据缩放、数据视图、图例开关、值域漫游等交互操作。
3. 高度可定制:几乎可以定制图表的每一个元素,满足各种个性化需求。
4. 跨平台兼容:支持PC端和移动端,兼容主流浏览器。
5. 动态数据更新:支持实时数据更新,适合展示动态变化的数据。
6. 开源免费:遵循Apache-2.0开源协议,免费使用。

ECharts的核心功能和特性

1. 多样化的图表类型

ECharts支持20多种常见的图表类型,并且这些图表类型可以自由组合,形成更加复杂的图表。例如,可以将折线图和柱状图组合在一起,同时展示趋势和具体数值。

2. 交互式数据探索

ECharts提供了丰富的交互功能,让用户可以自由探索数据。例如,通过缩放功能可以查看特定时间段的数据细节,通过图例开关可以显示或隐藏特定数据系列。

3. 动态数据更新

ECharts支持动态数据更新,可以实时展示数据变化。这一特性在监控大屏、实时数据分析等场景中尤为有用。

4. 大数据量渲染优化

ECharts针对大数据量进行了优化,可以流畅渲染百万级数据点,满足大数据可视化的需求。

5. 响应式设计

ECharts图表可以自适应容器大小,在不同设备上都能良好展示。

实际案例展示:从表格到图表的转变

让我们通过一个实际案例,展示如何将一个简单的销售数据表格转变为生动的ECharts可视化图表。

假设我们有以下销售数据表格:
  1. | 月份 | 产品A | 产品B | 产品C | 产品D |
  2. |------|-------|-------|-------|-------|
  3. | 1月  | 12000 | 15000 | 8000  | 10000 |
  4. | 2月  | 15000 | 18000 | 9000  | 12000 |
  5. | 3月  | 18000 | 20000 | 12000 | 15000 |
  6. | 4月  | 20000 | 22000 | 14000 | 18000 |
  7. | 5月  | 22000 | 25000 | 16000 | 20000 |
  8. | 6月  | 25000 | 28000 | 18000 | 22000 |
复制代码

使用ECharts,我们可以创建一个交互式的多系列折线图:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="utf-8">
  5.     <title>销售数据可视化</title>
  6.     <!-- 引入 ECharts 文件 -->
  7.     <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
  8. </head>
  9. <body>
  10.     <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
  11.     <div id="main" style="width: 800px;height:400px;"></div>
  12.     <script type="text/javascript">
  13.         // 基于准备好的dom,初始化echarts实例
  14.         var myChart = echarts.init(document.getElementById('main'));
  15.         // 指定图表的配置项和数据
  16.         var option = {
  17.             title: {
  18.                 text: '2023年上半年产品销售趋势'
  19.             },
  20.             tooltip: {
  21.                 trigger: 'axis'
  22.             },
  23.             legend: {
  24.                 data: ['产品A', '产品B', '产品C', '产品D']
  25.             },
  26.             grid: {
  27.                 left: '3%',
  28.                 right: '4%',
  29.                 bottom: '3%',
  30.                 containLabel: true
  31.             },
  32.             toolbox: {
  33.                 feature: {
  34.                     saveAsImage: {}
  35.                 }
  36.             },
  37.             xAxis: {
  38.                 type: 'category',
  39.                 boundaryGap: false,
  40.                 data: ['1月', '2月', '3月', '4月', '5月', '6月']
  41.             },
  42.             yAxis: {
  43.                 type: 'value'
  44.             },
  45.             series: [
  46.                 {
  47.                     name: '产品A',
  48.                     type: 'line',
  49.                     data: [12000, 15000, 18000, 20000, 22000, 25000]
  50.                 },
  51.                 {
  52.                     name: '产品B',
  53.                     type: 'line',
  54.                     data: [15000, 18000, 20000, 22000, 25000, 28000]
  55.                 },
  56.                 {
  57.                     name: '产品C',
  58.                     type: 'line',
  59.                     data: [8000, 9000, 12000, 14000, 16000, 18000]
  60.                 },
  61.                 {
  62.                     name: '产品D',
  63.                     type: 'line',
  64.                     data: [10000, 12000, 15000, 18000, 20000, 22000]
  65.                 }
  66.             ]
  67.         };
  68.         // 使用刚指定的配置项和数据显示图表。
  69.         myChart.setOption(option);
  70.     </script>
  71. </body>
  72. </html>
复制代码

这段代码将生成一个动态的、交互式的折线图,展示四种产品在6个月内的销售趋势。用户可以通过鼠标悬停查看具体数值,通过点击图例显示或隐藏特定产品线,还可以通过工具栏保存图表为图片。

更进一步,我们可以创建一个更加复杂的组合图表,同时展示销售额和增长率:
  1. // 指定图表的配置项和数据
  2. var option = {
  3.     title: {
  4.         text: '2023年上半年产品销售分析'
  5.     },
  6.     tooltip: {
  7.         trigger: 'axis',
  8.         axisPointer: {
  9.             type: 'cross',
  10.             crossStyle: {
  11.                 color: '#999'
  12.             }
  13.         }
  14.     },
  15.     toolbox: {
  16.         feature: {
  17.             dataView: {show: true, readOnly: false},
  18.             magicType: {show: true, type: ['line', 'bar']},
  19.             restore: {show: true},
  20.             saveAsImage: {show: true}
  21.         }
  22.     },
  23.     legend: {
  24.         data: ['销售额', '产品A', '产品B', '产品C', '产品D', '增长率']
  25.     },
  26.     xAxis: [
  27.         {
  28.             type: 'category',
  29.             data: ['1月', '2月', '3月', '4月', '5月', '6月'],
  30.             axisPointer: {
  31.                 type: 'shadow'
  32.             }
  33.         }
  34.     ],
  35.     yAxis: [
  36.         {
  37.             type: 'value',
  38.             name: '销售额',
  39.             min: 0,
  40.             axisLabel: {
  41.                 formatter: '{value} 元'
  42.             }
  43.         },
  44.         {
  45.             type: 'value',
  46.             name: '增长率',
  47.             min: 0,
  48.             max: 100,
  49.             axisLabel: {
  50.                 formatter: '{value} %'
  51.             }
  52.         }
  53.     ],
  54.     series: [
  55.         {
  56.             name: '产品A',
  57.             type: 'bar',
  58.             data: [12000, 15000, 18000, 20000, 22000, 25000]
  59.         },
  60.         {
  61.             name: '产品B',
  62.             type: 'bar',
  63.             data: [15000, 18000, 20000, 22000, 25000, 28000]
  64.         },
  65.         {
  66.             name: '产品C',
  67.             type: 'bar',
  68.             data: [8000, 9000, 12000, 14000, 16000, 18000]
  69.         },
  70.         {
  71.             name: '产品D',
  72.             type: 'bar',
  73.             data: [10000, 12000, 15000, 18000, 20000, 22000]
  74.         },
  75.         {
  76.             name: '销售额',
  77.             type: 'line',
  78.             yAxisIndex: 1,
  79.             data: [45000, 54000, 65000, 74000, 83000, 93000]
  80.         },
  81.         {
  82.             name: '增长率',
  83.             type: 'line',
  84.             yAxisIndex: 1,
  85.             data: [0, 20, 20.4, 13.8, 12.2, 12]
  86.         }
  87.     ]
  88. };
复制代码

这个组合图表同时展示了各产品的销售额(柱状图)、总销售额趋势(折线图)和增长率(折线图),让数据之间的关系一目了然。

ECharts的高级功能和定制化能力

1. 主题定制

ECharts允许用户自定义图表主题,包括颜色、字体、背景等。ECharts官方提供了多种预设主题,如’light’、’dark’等,同时也支持完全自定义主题。
  1. // 使用暗色主题
  2. var myChart = echarts.init(document.getElementById('main'), 'dark');
  3. // 或者自定义主题
  4. var myChart = echarts.init(document.getElementById('main'));
  5. var theme = {
  6.     "color": ["#3fb1e3", "#6be6c1", "#626c91", "#a0a7e6", "#c4ebad", "#96dee8"],
  7.     "backgroundColor": "#323c48",
  8.     "textStyle": {},
  9.     "title": {
  10.         "textStyle": {
  11.             "color": "#ffffff"
  12.         },
  13.         "subtextStyle": {
  14.             "color": "#aaaaaa"
  15.         }
  16.     },
  17.     // 更多主题配置...
  18. };
  19. myChart.setOption(option);
复制代码

2. 地图可视化

ECharts支持各种地图可视化,包括中国地图、世界地图以及省市级地图。这对于地理分布数据的展示非常有用。
  1. // 使用中国地图
  2. var option = {
  3.     title: {
  4.         text: '全国销售分布'
  5.     },
  6.     tooltip: {
  7.         trigger: 'item'
  8.     },
  9.     visualMap: {
  10.         min: 0,
  11.         max: 10000,
  12.         text: ['高', '低'],
  13.         realtime: false,
  14.         calculable: true,
  15.         inRange: {
  16.             color: ['#50a3ba', '#eac736', '#d94e5d']
  17.         }
  18.     },
  19.     series: [
  20.         {
  21.             name: '销售额',
  22.             type: 'map',
  23.             map: 'china',
  24.             roam: true,
  25.             emphasis: {
  26.                 label: {
  27.                     show: true
  28.                 }
  29.             },
  30.             data: [
  31.                 {name: '北京', value: 8500},
  32.                 {name: '天津', value: 4200},
  33.                 {name: '上海', value: 9200},
  34.                 {name: '重庆', value: 5800},
  35.                 // 更多省份数据...
  36.             ]
  37.         }
  38.     ]
  39. };
复制代码

3. 3D图表

ECharts支持3D图表,如3D柱状图、3D散点图、3D地球等,为数据展示增加了新的维度。
  1. // 3D柱状图示例
  2. var option = {
  3.     grid3D: {},
  4.     xAxis3D: {
  5.         type: 'category',
  6.         data: ['产品A', '产品B', '产品C', '产品D']
  7.     },
  8.     yAxis3D: {
  9.         type: 'category',
  10.         data: ['1月', '2月', '3月', '4月', '5月', '6月']
  11.     },
  12.     zAxis3D: {
  13.         type: 'value'
  14.     },
  15.     series: [{
  16.         type: 'bar3D',
  17.         data: [
  18.             [0, 0, 12000],
  19.             [0, 1, 15000],
  20.             [0, 2, 18000],
  21.             // 更多数据点...
  22.         ],
  23.         shading: 'lambert',
  24.         label: {
  25.             fontSize: 16,
  26.             borderWidth: 1
  27.         },
  28.         emphasis: {
  29.             label: {
  30.                 fontSize: 20,
  31.                 color: '#900'
  32.             },
  33.             itemStyle: {
  34.                 color: '#900'
  35.             }
  36.         }
  37.     }]
  38. };
复制代码

4. 动态数据更新

ECharts支持动态数据更新,可以实时展示数据变化。这在实时监控、动态数据展示等场景中非常有用。
  1. // 初始化图表
  2. var myChart = echarts.init(document.getElementById('main'));
  3. var base = +new Date(2023, 0, 1);
  4. var oneDay = 24 * 3600 * 1000;
  5. var date = [];
  6. var data = [Math.random() * 300];
  7. for (var i = 1; i < 30; i++) {
  8.     var now = new Date(base += oneDay);
  9.     date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'));
  10.     data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1]));
  11. }
  12. option = {
  13.     tooltip: {
  14.         trigger: 'axis',
  15.         formatter: function (params) {
  16.             params = params[0];
  17.             var date = new Date(params.name);
  18.             return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
  19.         },
  20.         axisPointer: {
  21.             animation: false
  22.         }
  23.     },
  24.     xAxis: {
  25.         type: 'time',
  26.         splitLine: {
  27.             show: false
  28.         }
  29.     },
  30.     yAxis: {
  31.         type: 'value',
  32.         boundaryGap: [0, '100%'],
  33.         splitLine: {
  34.             show: false
  35.         }
  36.     },
  37.     series: [{
  38.         name: '模拟数据',
  39.         type: 'line',
  40.         showSymbol: false,
  41.         hoverAnimation: false,
  42.         data: data
  43.     }]
  44. };
  45. myChart.setOption(option);
  46. // 模拟实时数据更新
  47. setInterval(function () {
  48.     for (var i = 0; i < 5; i++) {
  49.         data.shift();
  50.         data.push(Math.round((Math.random() - 0.5) * 20 + data[data.length - 1]));
  51.     }
  52.    
  53.     myChart.setOption({
  54.         series: [{
  55.             data: data
  56.         }]
  57.     });
  58. }, 1000);
复制代码

如何使用ECharts创建交互式数据故事

创建一个有效的数据故事不仅仅是展示数据,而是要通过数据传达洞察和见解。ECharts提供了多种功能,帮助用户创建引人入胜的数据故事。

1. 使用图表组合展示多维度数据

通过组合不同类型的图表,可以从多个角度展示数据,帮助观众全面理解数据背后的故事。
  1. // 组合图表示例:销售分析仪表盘
  2. option = {
  3.     title: {
  4.         text: '2023年上半年销售分析',
  5.         left: 'center'
  6.     },
  7.     tooltip: {
  8.         trigger: 'item',
  9.         formatter: '{a} <br/>{b}: {c} ({d}%)'
  10.     },
  11.     legend: {
  12.         orient: 'vertical',
  13.         left: 'left',
  14.         data: ['产品A', '产品B', '产品C', '产品D']
  15.     },
  16.     series: [
  17.         {
  18.             name: '销售占比',
  19.             type: 'pie',
  20.             radius: ['50%', '70%'],
  21.             avoidLabelOverlap: false,
  22.             label: {
  23.                 show: false,
  24.                 position: 'center'
  25.             },
  26.             emphasis: {
  27.                 label: {
  28.                     show: true,
  29.                     fontSize: '30',
  30.                     fontWeight: 'bold'
  31.                 }
  32.             },
  33.             labelLine: {
  34.                 show: false
  35.             },
  36.             data: [
  37.                 {value: 122000, name: '产品A'},
  38.                 {value: 135000, name: '产品B'},
  39.                 {value: 77000, name: '产品C'},
  40.                 {value: 97000, name: '产品D'}
  41.             ]
  42.         }
  43.     ]
  44. };
复制代码

2. 利用动画效果增强数据叙事

ECharts支持丰富的动画效果,可以通过动画引导观众的注意力,突出数据变化和关键信息。
  1. // 带动画效果的柱状图
  2. option = {
  3.     xAxis: {
  4.         type: 'category',
  5.         data: ['1月', '2月', '3月', '4月', '5月', '6月']
  6.     },
  7.     yAxis: {
  8.         type: 'value'
  9.     },
  10.     series: [{
  11.         data: [12000, 15000, 18000, 20000, 22000, 25000],
  12.         type: 'bar',
  13.         animationDelay: function (idx) {
  14.             return idx * 100;
  15.         }
  16.     }],
  17.     animationEasing: 'elasticOut',
  18.     animationDelayUpdate: function (idx) {
  19.         return idx * 5;
  20.     }
  21. };
复制代码

3. 添加交互式元素增强用户参与感

通过添加交互式元素,如数据缩放、数据视图、图例开关等,可以增强用户的参与感,让用户主动探索数据。
  1. // 带有丰富交互功能的折线图
  2. option = {
  3.     title: {
  4.         text: '销售趋势分析'
  5.     },
  6.     tooltip: {
  7.         trigger: 'axis'
  8.     },
  9.     legend: {
  10.         data: ['产品A', '产品B', '产品C', '产品D']
  11.     },
  12.     toolbox: {
  13.         show: true,
  14.         feature: {
  15.             dataZoom: {
  16.                 yAxisIndex: 'none'
  17.             },
  18.             dataView: {readOnly: false},
  19.             magicType: {type: ['line', 'bar']},
  20.             restore: {},
  21.             saveAsImage: {}
  22.         }
  23.     },
  24.     xAxis: {
  25.         type: 'category',
  26.         boundaryGap: false,
  27.         data: ['1月', '2月', '3月', '4月', '5月', '6月']
  28.     },
  29.     yAxis: {
  30.         type: 'value',
  31.         axisLabel: {
  32.             formatter: '{value} 元'
  33.         }
  34.     },
  35.     dataZoom: [
  36.         {
  37.             type: 'inside',
  38.             start: 0,
  39.             end: 100
  40.         },
  41.         {
  42.             start: 0,
  43.             end: 100
  44.         }
  45.     ],
  46.     series: [
  47.         {
  48.             name: '产品A',
  49.             type: 'line',
  50.             data: [12000, 15000, 18000, 20000, 22000, 25000],
  51.             markPoint: {
  52.                 data: [
  53.                     {type: 'max', name: '最大值'},
  54.                     {type: 'min', name: '最小值'}
  55.                 ]
  56.             }
  57.         },
  58.         {
  59.             name: '产品B',
  60.             type: 'line',
  61.             data: [15000, 18000, 20000, 22000, 25000, 28000],
  62.             markPoint: {
  63.                 data: [
  64.                     {type: 'max', name: '最大值'},
  65.                     {type: 'min', name: '最小值'}
  66.                 ]
  67.             }
  68.         },
  69.         {
  70.             name: '产品C',
  71.             type: 'line',
  72.             data: [8000, 9000, 12000, 14000, 16000, 18000],
  73.             markPoint: {
  74.                 data: [
  75.                     {type: 'max', name: '最大值'},
  76.                     {type: 'min', name: '最小值'}
  77.                 ]
  78.             }
  79.         },
  80.         {
  81.             name: '产品D',
  82.             type: 'line',
  83.             data: [10000, 12000, 15000, 18000, 20000, 22000],
  84.             markPoint: {
  85.                 data: [
  86.                     {type: 'max', name: '最大值'},
  87.                     {type: 'min', name: '最小值'}
  88.                 ]
  89.             }
  90.         }
  91.     ]
  92. };
复制代码

ECharts在不同行业的应用实例

1. 金融行业

在金融行业,ECharts被广泛用于股票行情分析、投资组合展示、风险评估等场景。通过实时更新的图表,投资者可以直观地了解市场动态和投资表现。
  1. // 股票K线图示例
  2. var upColor = '#ec0000';
  3. var upBorderColor = '#8A0000';
  4. var downColor = '#00da3c';
  5. var downBorderColor = '#008F28';
  6. // 数据值:[日期, 开盘价, 收盘价, 最低价, 最高价]
  7. var data0 = splitData([
  8.     ['2023/1/24', 2320.26, 2320.26, 2287.3, 2362.94],
  9.     ['2023/1/25', 2300, 2291.3, 2288.26, 2308.38],
  10.     // 更多数据...
  11. ]);
  12. function splitData(rawData) {
  13.     var categoryData = [];
  14.     var values = [];
  15.     for (var i = 0; i < rawData.length; i++) {
  16.         categoryData.push(rawData[i].splice(0, 1)[0]);
  17.         values.push(rawData[i])
  18.     }
  19.     return {
  20.         categoryData: categoryData,
  21.         values: values
  22.     };
  23. }
  24. function calculateMA(dayCount) {
  25.     var result = [];
  26.     for (var i = 0, len = data0.values.length; i < len; i++) {
  27.         if (i < dayCount - 1) {
  28.             result.push('-');
  29.             continue;
  30.         }
  31.         var sum = 0;
  32.         for (var j = 0; j < dayCount; j++) {
  33.             sum += +data0.values[i - j][1];
  34.         }
  35.         result.push(sum / dayCount);
  36.     }
  37.     return result;
  38. }
  39. option = {
  40.     title: {
  41.         text: '上证指数',
  42.         left: 0
  43.     },
  44.     tooltip: {
  45.         trigger: 'axis',
  46.         axisPointer: {
  47.             type: 'cross'
  48.         }
  49.     },
  50.     legend: {
  51.         data: ['日K', 'MA5', 'MA10', 'MA20', 'MA30']
  52.     },
  53.     grid: {
  54.         left: '10%',
  55.         right: '10%',
  56.         bottom: '15%'
  57.     },
  58.     xAxis: {
  59.         type: 'category',
  60.         data: data0.categoryData,
  61.         scale: true,
  62.         boundaryGap: false,
  63.         axisLine: {onZero: false},
  64.         splitLine: {show: false},
  65.         splitNumber: 20,
  66.         min: 'dataMin',
  67.         max: 'dataMax'
  68.     },
  69.     yAxis: {
  70.         scale: true,
  71.         splitArea: {
  72.             show: true
  73.         }
  74.     },
  75.     dataZoom: [
  76.         {
  77.             type: 'inside',
  78.             start: 50,
  79.             end: 100
  80.         },
  81.         {
  82.             show: true,
  83.             type: 'slider',
  84.             top: '90%',
  85.             start: 50,
  86.             end: 100
  87.         }
  88.     ],
  89.     series: [
  90.         {
  91.             name: '日K',
  92.             type: 'candlestick',
  93.             data: data0.values,
  94.             itemStyle: {
  95.                 color: upColor,
  96.                 color0: downColor,
  97.                 borderColor: upBorderColor,
  98.                 borderColor0: downBorderColor
  99.             },
  100.         },
  101.         {
  102.             name: 'MA5',
  103.             type: 'line',
  104.             data: calculateMA(5),
  105.             smooth: true,
  106.             lineStyle: {
  107.                 opacity: 0.5
  108.             }
  109.         },
  110.         {
  111.             name: 'MA10',
  112.             type: 'line',
  113.             data: calculateMA(10),
  114.             smooth: true,
  115.             lineStyle: {
  116.                 opacity: 0.5
  117.             }
  118.         },
  119.         {
  120.             name: 'MA20',
  121.             type: 'line',
  122.             data: calculateMA(20),
  123.             smooth: true,
  124.             lineStyle: {
  125.                 opacity: 0.5
  126.             }
  127.         },
  128.         {
  129.             name: 'MA30',
  130.             type: 'line',
  131.             data: calculateMA(30),
  132.             smooth: true,
  133.             lineStyle: {
  134.                 opacity: 0.5
  135.             }
  136.         }
  137.     ]
  138. };
复制代码

2. 电商行业

在电商行业,ECharts被用于用户行为分析、销售趋势展示、商品关联分析等。通过可视化图表,电商企业可以更好地了解用户需求,优化商品推荐和营销策略。
  1. // 电商销售漏斗图示例
  2. option = {
  3.     title: {
  4.         text: '购物转化率分析',
  5.         subtext: '2023年上半年数据'
  6.     },
  7.     tooltip: {
  8.         trigger: 'item',
  9.         formatter: "{a} <br/>{b} : {c}%"
  10.     },
  11.     toolbox: {
  12.         feature: {
  13.             dataView: {readOnly: false},
  14.             restore: {},
  15.             saveAsImage: {}
  16.         }
  17.     },
  18.     legend: {
  19.         data: ['展现', '点击', '访问', '咨询', '订单']
  20.     },
  21.     series: [
  22.         {
  23.             name: '转化率',
  24.             type: 'funnel',
  25.             left: '10%',
  26.             top: 60,
  27.             bottom: 60,
  28.             width: '80%',
  29.             min: 0,
  30.             max: 100,
  31.             minSize: '0%',
  32.             maxSize: '100%',
  33.             sort: 'descending',
  34.             gap: 2,
  35.             label: {
  36.                 show: true,
  37.                 position: 'inside'
  38.             },
  39.             labelLine: {
  40.                 length: 10,
  41.                 lineStyle: {
  42.                     width: 1,
  43.                     type: 'solid'
  44.                 }
  45.             },
  46.             itemStyle: {
  47.                 borderColor: '#fff',
  48.                 borderWidth: 1
  49.             },
  50.             emphasis: {
  51.                 label: {
  52.                     fontSize: 20
  53.                 }
  54.             },
  55.             data: [
  56.                 {value: 100, name: '展现'},
  57.                 {value: 80, name: '点击'},
  58.                 {value: 60, name: '访问'},
  59.                 {value: 40, name: '咨询'},
  60.                 {value: 20, name: '订单'}
  61.             ]
  62.         }
  63.     ]
  64. };
复制代码

3. 物流行业

在物流行业,ECharts被用于路线规划、配送效率分析、仓储管理等。通过地图可视化,物流企业可以直观地展示配送网络和实时物流状态。
  1. // 物流路线图示例
  2. option = {
  3.     backgroundColor: '#0F1C3C',
  4.     title: {
  5.         text: '物流配送路线',
  6.         left: 'center',
  7.         textStyle: {
  8.             color: '#fff'
  9.         }
  10.     },
  11.     tooltip: {
  12.         trigger: 'item'
  13.     },
  14.     geo: {
  15.         map: 'china',
  16.         roam: true,
  17.         label: {
  18.             emphasis: {
  19.                 show: false
  20.             }
  21.         },
  22.         itemStyle: {
  23.             normal: {
  24.                 areaColor: '#142957',
  25.                 borderColor: '#0692a4'
  26.             },
  27.             emphasis: {
  28.                 areaColor: '#0B1C3D'
  29.             }
  30.         }
  31.     },
  32.     series: [
  33.         {
  34.             name: '路线',
  35.             type: 'lines',
  36.             coordinateSystem: 'geo',
  37.             zlevel: 2,
  38.             effect: {
  39.                 show: true,
  40.                 period: 6,
  41.                 trailLength: 0,
  42.                 symbol: 'arrow',
  43.                 symbolSize: 7
  44.             },
  45.             lineStyle: {
  46.                 normal: {
  47.                     color: '#0692a4',
  48.                     width: 2,
  49.                     opacity: 0.6,
  50.                     curveness: 0.2
  51.                 }
  52.             },
  53.             data: [
  54.                 {
  55.                     fromName: '北京',
  56.                     toName: '上海',
  57.                     coords: [
  58.                         [116.4551, 40.2539],
  59.                         [121.4648, 31.2891]
  60.                     ]
  61.                 },
  62.                 {
  63.                     fromName: '上海',
  64.                     toName: '广州',
  65.                     coords: [
  66.                         [121.4648, 31.2891],
  67.                         [113.5107, 23.2196]
  68.                     ]
  69.                 },
  70.                 {
  71.                     fromName: '广州',
  72.                     toName: '成都',
  73.                     coords: [
  74.                         [113.5107, 23.2196],
  75.                         [103.9526, 30.7617]
  76.                     ]
  77.                 },
  78.                 {
  79.                     fromName: '成都',
  80.                     toName: '北京',
  81.                     coords: [
  82.                         [103.9526, 30.7617],
  83.                         [116.4551, 40.2539]
  84.                     ]
  85.                 }
  86.             ]
  87.         },
  88.         {
  89.             name: '仓库',
  90.             type: 'scatter',
  91.             coordinateSystem: 'geo',
  92.             zlevel: 2,
  93.             rippleEffect: {
  94.                 brushType: 'stroke'
  95.             },
  96.             label: {
  97.                 emphasis: {
  98.                     show: true,
  99.                     position: 'right',
  100.                     formatter: '{b}'
  101.                 }
  102.             },
  103.             symbolSize: function (val) {
  104.                 return val[2] / 8;
  105.             },
  106.             itemStyle: {
  107.                 normal: {
  108.                     color: '#a6c84c'
  109.                 }
  110.             },
  111.             data: [
  112.                 {name: '北京', value: [116.4551, 40.2539, 100]},
  113.                 {name: '上海', value: [121.4648, 31.2891, 80]},
  114.                 {name: '广州', value: [113.5107, 23.2196, 70]},
  115.                 {name: '成都', value: [103.9526, 30.7617, 60]}
  116.             ]
  117.         }
  118.     ]
  119. };
复制代码

未来数据可视化的发展趋势

随着技术的不断进步,数据可视化领域也在不断发展。未来,我们可以期待以下趋势:

1. 增强现实(AR)和虚拟现实(VR)数据可视化

AR和VR技术将为数据可视化带来全新的维度,用户可以在三维空间中与数据进行交互,获得更加沉浸式的数据体验。

2. 人工智能辅助的数据可视化

AI技术将帮助用户自动选择最适合的图表类型,优化数据展示方式,甚至自动生成数据洞察和建议。

3. 实时协作数据可视化

未来的数据可视化工具将支持多人实时协作,团队成员可以同时查看和操作同一份数据可视化报告,提高决策效率。

4. 更强大的交互性和个性化

数据可视化将提供更加丰富的交互功能,并能够根据用户的行为和偏好自动调整展示方式,提供个性化的数据体验。

结论:ECharts如何让数据讲述更生动的故事

ECharts作为一款功能强大的数据可视化库,正在彻底改变传统的数据展示方式。通过丰富的图表类型、强大的交互功能和高度的可定制性,ECharts让原本枯燥的数据变得生动有趣,能够讲述更加引人入胜的故事。

从简单的表格到复杂的交互式图表,ECharts为数据分析师和开发人员提供了强大的工具,帮助他们将数据转化为有价值的洞察。无论是在金融、电商、物流还是其他行业,ECharts都能够满足各种数据可视化需求,帮助企业更好地理解数据,做出更明智的决策。

随着数据可视化技术的不断发展,ECharts也在持续更新和完善,为用户带来更加先进和便捷的数据可视化体验。未来,我们有理由相信,ECharts将继续引领数据可视化的创新,让数据故事变得更加生动、有趣和富有洞察力。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>