ECharts折线图+联动+dataZoom

2023-10-26

<!DOCTYPE html>
<html lang="en" style="height: 100%">
<head>
    <meta charset="UTF-8">
    <title>TRAFFIC</title>
    <style>
        #main{
            width: 50%;
            height:300px;
        }
        #main2{
            width: 50%;
            height:300px;
        }
    </style>
    <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body style="height: 100%; margin: 0;min-width: 1420px;min-height: 800px">
<div id="main"></div>
<div id="main2"></div>
<script>
    //dataZoom组件有start和end属性,假如你有100个数据,设置start:30,end:80,那么对应的图表就会显示第30~80个数据
    //本例子的两个图表联动主要原理是当表1数据开始伸缩时,
    // 通过'dataZoom'事件抓取当前dataZoom的starValue、endValue或者startPercent,endPercent,
    // 然后把表2的dataZoom设置成同样的starValue、endValue或者startPercent,endPercent
    var traffic = echarts.init(document.getElementById("main"));
    var traffic2 = echarts.init(document.getElementById("main2"));

    var data = [];
    var now = +new Date(1997, 9, 3,9,30,30);
    var oneDay = 600 * 1000;

    function randomData() {
        now = new Date(+now + oneDay);
        value =  Math.random() * 80 + 20;
        return {
            name: now.toLocaleString('chinese',{hour12:false}),
            value: [
                now.toLocaleString('chinese',{hour12:false}),
                Math.round(value)
            ]

        }
    }

    for (var i = 0; i < 100; i++) {
        data.push(randomData());
    }

    // console.log(data);

    var option1 = {
        title: {
            text: '在此图表中滚动鼠标'
        },
        tooltip: {
            trigger: 'axis',
            formatter: function (params) {
                params = params[0];
                var date = new Date(params.name);
                return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
            },
            axisPointer: {
                animation: false
            }
        },
        xAxis: {
            type: 'time',
            splitLine: {
                show: false
            }
        },
        yAxis: {
            type: 'value',
            boundaryGap: [0, '100%'],
            splitLine: {
                show: false
            }
        },
        dataZoom: [
            {
                type:'inside',
                show: true,
            },
        ],
        series: [{
            name: '模拟数据',
            type: 'line',
            data: data
        }]
    };

    var option2 = {
        title: {
            text: '此图表对应上面的一起变化'
        },
        tooltip: {
            trigger: 'axis',
            formatter: function (params) {
                params = params[0];
                var date = new Date(params.name);
                return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
            },
            axisPointer: {
                animation: false
            }
        },
        xAxis: {
            type: 'time',
            splitLine: {
                show: false
            }
        },
        yAxis: {
            type: 'value',
            boundaryGap: [0, '100%'],
            splitLine: {
                show: false
            }
        },
        dataZoom: [
            {
                type:'inside',
                show: true,
                start: 0,
                end: 100,
            },
        ],
        series: [{
            name: '模拟数据',
            type: 'line',
            data: data
        }]
    };

    traffic.setOption(option1);
    traffic2.setOption(option2);

    traffic.on('datazoom', function (params){
        // 事件有很多,参见http://echarts.baidu.com/api.html#events
        //params是个好东西,里面有什么,可以打印出来看一下就明白
        console.log(params);
        //可以通过params获取缩放的起止百分比,但是鼠标滚轮和伸缩条拖动触发的params格式不同,所以用另一种方法
        //获得图表数据数组下标
        var startValue = traffic.getModel().option.dataZoom[0].startValue;
        var endValue = traffic.getModel().option.dataZoom[0].endValue;
        //获得起止位置百分比
        var startPercent = traffic.getModel().option.dataZoom[0].start;
        var endPercent = traffic.getModel().option.dataZoom[0].end;

        console.log(startValue,endValue,startPercent,endPercent);

        option2.dataZoom[0].start = startPercent;
        option2.dataZoom[0].end = endPercent;
        traffic2.setOption(option2);

    });

    window.onresize = function () {
        traffic.resize();
        traffic2.resize();
    };
</script>
</body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ECharts折线图+联动+dataZoom 的相关文章

随机推荐

  • v8所有例子在里面

    https github com nodejs nan blob master doc methods md
  • 线程间怎么交换数据_在LLVM后端实现跨通道数据搬移

    作者 汪岩 AMD GPU的每个CU有一个64kB的存储空间 称为本地数据共享 Local Data Share LDS 用于同一计算单元中的work group内各个work item之间的低延迟通信和数据共享 LDS配置为32个bank
  • 为了通过面试,要刷多少道leetcode题?一文解答你的疑惑。

    想要学习算法 应付笔试或者应付面试手撕算法题 相信大部分人都会去刷 Leetcode 有读者问 如果我在 leetcode 坚持刷它个 500 道题 以后笔试 面试稳吗 这里我说下我的个人看法 我认为不稳 下面说说为啥不稳以及算法题应该如何
  • Acwing 908. 最大不相交区间数量

    include
  • VTM中YUV-PSNR的计算

    名词解释 参见文章cnblogs 什么是SAD SAE SATD SSD SSE MAD MAE MSD MSE PSNR的计算 较为标准的MSE计算公式和PSNR计算公式如下 引用链接 CSDN 图像的峰值信噪比 PSNR 的计算方法 这
  • linux用户态使用gpio中断方法

    一 用户空间gpio的调用文件 用户空间访问gpio 即通过sysfs接口访问gpio 下面是 sys class gpio目录下的三种文件 export unexport文件 gpioN指代具体的gpio引脚 gpio chipN指代gp
  • 数字化转型的成熟度模型

    来啦 坐 我是冠军 数据赋能 IT团队技术管理实战 作者 四季逗文风创始人 这是 数字化转型系列 第五篇 数字化转型的成熟度模型 一句话解释下 要想搞清楚企业数字化转型的目标 就需要确定企业现在处于什么数字化阶段 只有如此 才可以根据现状目
  • Golang

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 专注 企业运维实践 网络安全 系统运维 应用开发 物联网实战 全栈文章 等知识分享 花开堪折直须折 莫待无花空
  • 2023校招联想汽车C++开发一面

    飞书面试 C 开发 全程无手撕代码 开放性面试 1 翻译英文 给几段英文句子 是和专业相关的 要求英译汉 2 给好几组计算机专业名词 从中选择最熟悉的 进行解释 比如https dns smtp等等 3 一个电路 求其中一个电阻电压 4 代
  • NB!更方便Xshell本地密码破解工具

    工具介绍 XshellCrack是基于SharpXDecrypt的二次开发 用go语言重写 增加了注册表查询设置 更方便xshell本地密码破解 关注 Hack分享吧 公众号 回复关键字 230717 获取下载链接 工具使用 Usage r
  • JavaScript--修改 HTML 元素

    这些是一些用于修改 HTML 元素的常见方法 1 document createElement element 创建 HTML 元素节点 可以使用这个方法创建一个新的 HTML 元素 例如 document createElement di
  • Docker进阶学习:Compose配置编写规则

    docker compose yaml 是Compose的核心 以下是compose的官方文档地址 https docs docker com compose compose file compose file structure and
  • rabbitmq集群故障处理

    rabbitmq集群故障处理 故障现象 rabbitmq启动失败 手动kill掉rabbit的后台进程 杀完后进程又会自动起来 故障处理 1 手动更改rabbitmq故障节点的erl crash dump为erl crash dump ba
  • JavaScript 的面向对象基础,设计模式中的原型模式(设计模式与开发实践 P2)

    文章目录 1 1 动态类型语言和鸭子类型 1 2 多态 1 3 封装 封装数据 封装实现 封装类型 1 4 原型模式和基于原型继承的 JavaScript 对象系统 C 原型模式 JS 原型模式 在学习 JS 设计模式之前需要了解一些设计模
  • 嵌入式开发课程简介

    最近几年 几乎所有的IT企业对应届毕业生都有抱怨 动手能力太差 编程水平低下 大学期间 老师授课以理论为主 学生缺少各种实践 这造成很多学生就业难 学生找不到工作 而企业招不到合适的人 本课程不仅系统的梳理了一遍工作中常用的知识 更是通过大
  • LLM论文周报|来自清华、MetaAI、Nous Research等机构论文研究

    大模型 LLM 是一种人工智能模型 旨在理解和生成人类语言 它们在大量的文本数据上进行训练 可以执行广泛的任务 包括文本总结 翻译 情感分析等等 LLM的特点是规模庞大 包含数十亿的参数 帮助它们学习语言数据中的复杂模式 这些模型通常基于深
  • 安装搭建悟空CRM 网络错误,请检查您的网络 问题处理

    1 很多朋友在GitHub上面下载的悟空crm最新版程序 进行安装搭建后发现 运行程序打开显示 悟空软件 但是登录进去管理界面的时候就提示说 网络请求失败 请稍候再试 怎么办呢 2 导入服务端根文件夹数据库文件public sql 5kcr
  • Kubernetes 网络概念及策略控制(叶磊)

    本文将主要分享以下 5 方面的内容 Kubernetes 基本网络模型 Netns 探秘 主流网络方案简介 Network Policy 的用处 思考时间 Kubernetes 基本网络模型 本节来介绍一下 Kubernetes 对网络模型
  • SpringBoot 集成MyBatis-Plus提示反序列化异常:cannot deserialize from Object value (no delegate- or property-bas

    SpringBoot集成MyBatis Plus 实现HTPP POST提交实体对象提示如下错误片段 重点错误信息字段 cannot deserialize from Object value no delegate or property
  • ECharts折线图+联动+dataZoom