点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
我们近些年做了一个可视化看板模块,这个模块实现了报表和拓扑图可视化配置以及实时展示数据等功能,现在已经在多个场地部署使用,其中报表中的如折线图、柱状图、散点图等组件的功能展示,均基于开源组件 Apache ECharts 封装实现。
各场地在使用前台看板模块进行报表配置折线图时,出现了折线图显示异常的问题,我们根据现场反馈的数据模拟问题分析解决过程。
某场地反馈,前台看板配置的折线图展示存在问题,总数据量在 1w+ ,配置成 8 条折线,但每条折线的长度都只有折线图表长度的 1/8 左右,后续部分显示为空白,如下图所示:

1. 原始数据分析

2. 数据格式分析
option = {
title: {
text: 'Stacked Line'
},
tooltip: {
trigger: 'axis'
},
# 分组信息
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
# X 轴数据
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
# 折线数据
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'line',
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Direct',
type: 'line',
stack: 'Total',
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
};
3. 分析结果
按照 ECharts 的处理逻辑,首先渲染了一个 X 轴长度为 1w 的坐标系,然后将 8 条折线的数据依次渲染出来,每条折线的数据量为 1.3k ,而数据的对应关系确实,X 轴的第 1 个数据分别对应 8 条折线的第 1 个数据,X 轴的第 2 个数据分别对应 8 条折线的第 2 个数据……X 轴的第 n 个数据分别对应 8 条折线的第 n 个数据。当对应到 1.3k 后,8 条折线已经没有数据了,而 X 轴还有很多的数据无法找到对应。于是就出现了问题描述中的情况,每条折线的长度都只有折线图表长度的 1/8 左右,后续部分显示为空白。
由于这个问题属于 ECharts 的数据处理逻辑问题,通过ECharts 最新版本样例中,导入数据,发现问题还存在,处理逻辑也没有改变。


本文作者:长研架构小组(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




