ECharts xAxis.type='time'时间轴时卡顿问题

摘要:
上周在使用的时候发现号称支持千万数据流畅显示的EC居然在1300*3的数据下变得很卡,一点不科学。初步分析是xAxis.type为time导致,因为切换回category后就卡顿问题消失。提了issue暂时无果,后来分析了一波找到以下**解决办法**:series中设置showSymbol:false,hoverAnimation:falseoption中设置animation:false,animationDurationUpdate:0得出结论是xAxis.type:'time'结合series.showSymbol:true导致图表卡顿。

原文首发于我的个人网站: https://lonhon.top/

卡顿问题出现背景:

  • ECharts^4.0.4 + Vue^2.5.9
  • option中主要耗能设置为:折线图 + Y轴2 + series3 + 数据量1300*3 + dataZoom控件
  • 最开始X轴type为类目轴category,最近根据情况想改为时间轴time

卡顿主要表现在tooltip显示和拖动dataZoom时。

上周在使用的时候发现号称支持千万数据流畅显示的EC居然在1300*3的数据下变得很卡,一点不科学。
初步分析是xAxis.type为time导致,因为切换回category后就卡顿问题消失。

提了issue暂时无果,后来分析了一波找到以下 ** 解决办法 ** :

  • series中设置 showSymbol: false, hoverAnimation: false
  • option中设置 animation: false, animationDurationUpdate: 0

得出结论是xAxis.type:'time' 结合 series.showSymbol:true 导致图表卡顿。

测试地址: http://echarts.baidu.com/examples/editor.html?c=dynamic-data2

测试代码(自行更改数据量和最后两行注释):

function randomData() {
    now = new Date(+now + oneDay);
    value = value + Math.random() * 21 - 10;
    return {
        name: now.toString(),
        value: [
            [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'),
            Math.round(value)
        ]
    }
}

var data = [], data1 = [], timeline = [];
var now = +new Date(1997, 9, 3);
var oneDay = 24 * 3600 * 1000;
var value = Math.random() * 1000;
for (var i = 0; i < 4000; i++) {
    data.push(randomData());
}

option = {
    title: {
        text: '动态数据 + 时间坐标轴'
    },
    tooltip: {
        trigger: 'axis'
    },
    xAxis: {
        type: 'time'
    },
    yAxis: [{
        type: 'value',
        boundaryGap: [0, '100%']
    },{
        type: 'value',
        boundaryGap: [0, '100%']
    }],
    series: [{
        name: '模拟数据',
        type: 'line',
        data: data,
        // showSymbol: false,
        // hoverAnimation: false
    }],
};

免责声明:文章转载自《ECharts xAxis.type='time'时间轴时卡顿问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python中filter()函数hwclock和date源码分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

支付宝支付api

使用:alipayDemo来配置支付宝支付接口1拿到商户号,回调地址,支付宝公钥,我的私钥---生成一个对象#给支付宝发请求,信息要用支付宝公钥加密#支付宝给我响应信息,信息会用商户的公钥加密,回来之后再拿用户私钥解密2对象.direct_pay传支付金额,支付商品描述,支付订单号---返回个加密的串3拿到加密的串拼到get请求参数部分pay_url="ht...

js 预览 excel,js-xlsx的使用

js-xlsx简介SheetJS生成的js-xls x是一个非常方便的工具库,只能使用纯js读取和导出excel。它功能强大,支持多种格式,支持xls、xlsx和ods等十几种格式。本文以xlsx格式为例。官方github:https://github.com/SheetJS/js-xlsx支持演示在线演示地址:http://demo.haoji.me/20...

面试了一个 31岁的iOS开发者,思绪万千,30岁以上的程序员还有哪些出路?

前言之前HR给了我一份简历,刚看到简历的第一眼,31岁?31岁,iOS开发工程师,工作经历7年,5年左右都在外包公司,2年左右在创业公司。iOS开发工程师这块,还是很少遇到30岁以上的开发,正好,来了一个30岁的开发,说实话,对我来说,还是蛮期待的,希望对我有所启示。这样的过程持续了半个小时那么年过350岁的程序员还有出路吗?作为一个8年的iOS开发,而且几...

windows下mstsc 远程Ubuntu 教程

为远程桌面控制设置Ubuntu 16.04的缺点是重新启动系统需要使用监视器登录系统。首先,我们将Ubuntu远程控制设置为允许远程连接,进入系统-˃首选项-˃桌面共享,或直接搜索桌面共享。如图所示,选中此项,然后选中安全项,并设置远程密码。...

2.页面绘制和引入组件库uView

文本+背景色的形式,而不是横幅图的形式,可以节省未来的工作量。在index.vue中,关于开关的代码:EFGHIJKLMNOPQRSTUWXYZB˃DEFGHIJKLNNOPQRSTUVWXYZEFGHIJKLMNOPQRSTUVWXYZ导出默认值{data(){return{}},onLoad()},方法:{}}。横幅{width:100%;height:...

Java 安全之:csrf攻击总结

最近,我在维护一些旧项目。在调试期间,我发现请求被反复拒绝。我仔细查看了项目的源代码,发现存在csrftoken验证。我借此机会了解了csrf攻击,并将其总结成一篇论文。受攻击的网站无法阻止攻击。在整个过程中,攻击者无法获取受害者的登录凭据,只能“冒充”。CSRF攻击成功,因为服务器将攻击者发送的请求误认为是用户的请求。服务器通过验证请求是否携带正确的令牌来...