创建echart多个联动的示例代码


Posted in Javascript onNovember 23, 2018
鼠标悬浮同时触发多个echart

效果如下

创建echart多个联动的示例代码

html代码

<div class="contain">
    <div class="sel">
      <div class="sel1">
        <div class="top">
          <span>选择时间间隔</span>
          <div class="show">
            <span>one second</span>
            <i class="glyphicon glyphicon-chevron-right"></i>
          </div>
        </div>
        <div class="block">
          <div leap="second">one second</div>
          <div leap="minute">one minute</div>
          <div leap="hour">one hour</div>
          <div leap="day">one day</div>
          <div leap="week">one week</div>
          <div leap="month">one month</div>
          <div class="active" leap="year">one year</div>
        </div>
      </div>
      <div class="sel2">
        <div class="top">
          <span>选择数据个数</span>
          <div class="show">
            <span>5</span>
            <i class="glyphicon glyphicon-chevron-right"></i>
          </div>
        </div>
        <div class="block">
          <div leap="5">5</div>
          <div leap="10">10</div>
          <div leap="15">15</div>
          <div leap="20">20</div>
          <div leap="25">25</div>
          <div leap="30">30</div>
          <div leap="35">35</div>
        </div>
      </div>
      <div class="zybtn">确定</div>
    </div>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 1000px;height:300px;margin-top:45px;"></div>
    <div id="main2" style="width: 1000px;height:300px;"></div>
  </div>

css代码

body {
  margin: 0;
  padding: 0;
  background-color: #eee;
}
.contain {
  padding: 10px;
}
.sel {
  position: absolute;
  height: 250px;
  z-index: 10;
}
.sel>div {
  float: left;
  margin-right: 10px;
}
.top span {
  display: inline-block;
  width: 100px;
  height: 30px;
}
.top .show {
  width: 125px;
  height: 25px;
  float: right;
  border: 1px solid #444;
  padding-left: 5px;
  position: relative;
}

.block {
  float: right;
  position: relative;
  border-radius: 5px;
  padding: 5px;
  width: 120px;
  box-shadow: 1px 1px 5px #444;
  display: none;
  background-color: #fff;
}
.block>div {
  height: 25px;
  line-height: 25px;
  padding-left: 5px;
  border-radius: 5px;
  cursor: pointer;
}
.block>div:hover {
  background-color: #D3E3E5;
}
.block>div.active {
  background-color: #087C90;
  color: #fff;
}
.zybtn {
  width: 80px;
  height: 30px;
  border-radius: 5px;
  background-color: #46AD08;
  line-height: 30px;
  text-align: center;
  color: #fff;
  cursor: pointer;
}
i.glyphicon {
  top: 3px;
  right: 5px
}

js代码

function drawchart(timearr, dataarr) {
  // 基于准备好的dom,初始化echarts实例
  var myChart1 = echarts.init(document.getElementById('main'));
  var myChart2 = echarts.init(document.getElementById('main2'));

  // 指定图表的配置项和数据
  var option1 = {
    title: {
      text: 'chart1'
    },
    tooltip: {
      show: true,
      trigger: 'axis',
      axisPointer: {
        type: 'line'
      },
      lineStyle: {
        color: '#000',
      }
    },
    legend: {
      data: ['销量1']
    },
    grid:{
      y2:140
    },
    xAxis: [{
      type: 'category',
      data: timearr,
      axisLabel: {
        interval: 0, //横轴信息全部显示
        rotate: -45, //-30度角倾斜显示
      }
    }],
    yAxis: [{
      type: 'value',

    }],
    series: [{
      name: '销量1',
      type: 'line',
      data: dataarr
    }]
  };
  var option2 = {
    title: {
      text: 'chart2'
    },
    tooltip: {
      show: true,
      trigger: 'axis',
      axisPointer: {
        type: 'line'
      },
      lineStyle: {
        color: '#000',
      }
    },
    legend: {
      data: ['销量2']
    },
    grid:{
      y2:140
    },
    xAxis: [{
      type: 'category',
      data: timearr,
      axisLabel: {
        interval: 0, //横轴信息全部显示
        rotate: -45, //-30度角倾斜显示
      }
    }],
    yAxis: [{
      type: 'value',

    }],
    series: [{
      name: '销量2',
      type: 'line',
      data: dataarr
    }]
  };

  // 为echarts对象加载数据
  myChart1.setOption(option1);
  myChart2.setOption(option2); //联动配置

  // 分别设置每个实例的 group id
  myChart1.group = 'group1';
  myChart2.group = 'group1';
  echarts.connect('group1');
  // 或者可以直接传入需要联动的实例数
  // echarts.connect([myChart1,myChart2]);
}
// 获取x轴时间字符串
function gettimestr(tseconds) {
  var str = '';
  var year = new Date(tseconds).getFullYear();
  var month = new Date(tseconds).getMonth() + 1;
  var date = new Date(tseconds).getDate();
  var hour = new Date(tseconds).getHours();
  var minute = new Date(tseconds).getMinutes();
  var second = new Date(tseconds).getSeconds();
  if (month < 10) {
    month = "0" + month
  }
  if (date < 10) {
    date = "0" + date
  }
  if (hour < 10) {
    hour = "0" + hour
  }
  if (minute < 10) {
    minute = "0" + minute
  }
  if (second < 10) {
    second = "0" + second
  }
  str += year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
  return str;
}
getsel()
// 获取两个数值
function getsel() {
  $("i").on("click", function () {
    var that = $(this);
    var block = that.parents(".top").next();
    // 点击i触发函数,判断类型
    if ($(this).hasClass("glyphicon-chevron-right")) {
      $(this).removeClass("glyphicon-chevron-right");
      $(this).addClass("glyphicon-chevron-down")
      block.children("div").each(function () {
        $(this).removeClass("active")
      });
      block.slideDown();

    } else if ($(this).hasClass("glyphicon-chevron-down")) {
      $(this).removeClass("glyphicon-chevron-down");
      $(this).addClass("glyphicon-chevron-right")
      block.slideUp()
    }
    block.children("div").on("click", function () {
      $(this).addClass("active");
      that.prev("span").html($(this).html())
      that.removeClass("glyphicon-chevron-down");
      that.addClass("glyphicon-chevron-right")
      block.slideUp()
    });
  });
  var val1 = 1000;
  var val2 = 5;
  $(".zybtn").on("click", function () {
    switch ($(".sel1 .show span").html()) {
      case 'one second':
        val1 = 1000;
        break;
      case 'one minute':
        val1 = 1000 * 60;
        break;
      case 'one hour':
        val1 = 1000 * 3600;
        break;
      case 'one day':
        val1 = 1000 * 3600 * 24;
        break;
      case 'one week':
        val1 = 1000 * 3600 * 24 * 7;
        break;
      case 'one month':
        val1 = 1000 * 3600 * 24 * 30;
        break;
      case 'one year':
        val1 = 1000 * 3600 * 24 * 365;
        break;
    }
    switch ($(".sel2 .show span").html()) {
      case '5':
        val2 = 5;
        break;
      case '10':
        val2 = 10;
        break;
      case '15':
        val2 = 15;
        break;
      case '20':
        val2 = 20;
        break;
      case '25':
        val2 = 25;
        break;
      case '30':
        val2 = 30;
        break;
      case '35':
        val2 = 35;
        break;
    }
    changedata(val1, val2)
  })
  changedata(val1, val2)
}

function changedata(sel1, sel2) {
  // 获取当前日期
  var getdate = new Date();
  var tseconds = getdate.getTime();

  var timearr = [];
  var dataarr = [];
  for (var i = 0; i < sel2; i++) {
    timearr.push(gettimestr(tseconds - sel1 * i))
    dataarr.push(Math.ceil(Math.random() * 10))
  }

  drawchart(timearr, dataarr)
}

PS:echart多表联动

<!DOCTYPE html>
<head>
  <meta charset="utf-8">
  <title>ECharts</title>
</head>
<body>
  <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  <div id="main1" style="height:200px"></div>
  <div id="main2" style="height:200px"></div>
  <div id="main3" style="height:200px"></div>
  <div id="main4" style="height:200px"></div>
  <!-- ECharts单文件引入 -->
  <script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
  <script type="text/javascript">
    // 路径配置
    require.config({
      paths: {
        echarts: 'http://echarts.baidu.com/build/dist'
      }
    });
     
    // 使用
    require(
      [
        'echarts',
        'echarts/chart/bar', // 使用柱状图就加载bar模块,按需加载
        'echarts/chart/line'
      ],
      function (ec) {
        // 基于准备好的dom,初始化echarts图表
        var myChart1 = ec.init(document.getElementById('main1'));
        var myChart2 = ec.init(document.getElementById('main2'));
        var myChart3 = ec.init(document.getElementById('main3'));
        var myChart4 = ec.init(document.getElementById('main4'));
 
        myChart1.setTheme("macarons");
        myChart2.setTheme("macarons");
        myChart3.setTheme("macarons");
        myChart4.setTheme("macarons");
         
        var option1 = {
          title : {
            text: '温度状况',
            subtext: '纯属虚构'
          },
          tooltip : {
            trigger: 'axis'
          },
          legend: {
            data:['设定温度','进水温度','出水温度','环境温度']
          },
          toolbox: {
            show : true,
            feature : {
              mark : {show: true},
              dataView : {show: true, readOnly: false},
              magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
              restore : {show: true},
              saveAsImage : {show: true}
            }
          },
          xAxis : [
            {
              type : 'category', //x轴为类目类型
              axisLabel:{
                show:true,
                interval:0,
                rotate:45
              },
              data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00']
 
          }],
          yAxis : [
            {
              type : 'value' //y轴为值类型
            }
          ],
          series : [{ 
            name:'设定温度',
            type:'line',
            smooth:true,
            data:[55,55,55,55,55,55,55,55,55,55]
          }]
        }
 
      var option2 = {
          tooltip : {
            trigger: 'axis'
          },
          legend: {
            y:-30,
            data:['设定温度','进水温度','出水温度','环境温度']
          },
          toolbox: {
            y : -30,
            show : true,
            feature : {
              mark : {show: true},
              dataView : {show: true, readOnly: false},
              magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
              restore : {show: true},
              saveAsImage : {show: true}
            }
          },
          xAxis : [
            {
              type : 'category', //x轴为类目类型
              axisLabel:{
                show:true,
                interval:0,
                rotate:45
              },
              data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00']
 
          }],
          yAxis : [
            {
              type : 'value' //y轴为值类型
            }
          ],
          series : [{ 
            name:'进水温度',
            type:'line',
            smooth:true,
            data:[15,15,16,18,18,19,19,19,19,19]
          }]
        }
 
      var option3 = {
          tooltip : {
            trigger: 'axis'
          },
          legend: {
            y : -30,
            data:['设定温度','进水温度','出水温度','环境温度']
          },
          toolbox: {
            y : -30,
            show : true,
            feature : {
              mark : {show: true},
              dataView : {show: true, readOnly: false},
              magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
              restore : {show: true},
              saveAsImage : {show: true}
            }
          },
          xAxis : [
            {
              type : 'category', //x轴为类目类型
              axisLabel:{
                show:true,
                interval:0,
                rotate:45
              },
              data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00']
 
          }],
          yAxis : [
            {
              type : 'value' //y轴为值类型
            }
          ],
          series : [{ 
            name:'出水温度',
            type:'line',
            smooth:true,
            data:[20,25,30,35,38,44,46,48,53,56]
          }]
        }
 
      var option4 = {
          tooltip : {
            trigger: 'axis'
          },
          legend: {
            y : -30,
            data:['设定温度','进水温度','出水温度','环境温度']
          },
          toolbox: {
            y : -30,
            show : true,
            feature : {
              mark : {show: true},
              dataView : {show: true, readOnly: false},
              magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
              restore : {show: true},
              saveAsImage : {show: true}
            }
          },
          xAxis : [
            {
              type : 'category', //x轴为类目类型
              axisLabel:{
                show:true,
                interval:0,
                rotate:45
              },
              data : ['00:00:00','00:05:00','00:10:00','00:15:00','00:20:00','00:25:00','00:30:00','00:35:00','00:40:00','00:45:00']
 
          }],
          yAxis : [
            {
              type : 'value' //y轴为值类型
            }
          ],
          series : [{ 
            name:'环境温度',
            type:'line',
            smooth:true,
            data:[15,15,15,15,15,15,15,15,15,15]
          }]
        }
 
      // 为echarts对象加载数据
      myChart1.setOption(option1);
      myChart2.setOption(option2);
      myChart3.setOption(option3);
      myChart4.setOption(option4);
      //联动配置
      myChart1.connect([myChart2, myChart3,myChart4]);
      myChart2.connect([myChart1, myChart3,myChart4]);
      myChart3.connect([myChart2, myChart1,myChart4]);
      myChart4.connect([myChart2, myChart3,myChart1]);
      }
    );
  </script>
</body>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js,alert出现乱码问题的解决方法
Jun 19 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
jQuery实现锚点scoll效果实例分析
Mar 10 Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 Javascript
vue 组件基础知识总结
Jan 26 Vue.js
详解Angular模板引用变量及其作用域
Nov 23 #Javascript
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 #Javascript
详解Vue2.0组件的继承与扩展
Nov 23 #Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 #Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
Nov 23 #Javascript
Vue.js组件间通信方式总结【推荐】
Nov 23 #Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 #Javascript
You might like
PHP生成月历代码
2007/06/14 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
Python AES加密模块用法分析
2017/05/22 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
django富文本编辑器的实现示例
2019/04/10 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python常用函数与用法示例
2019/07/02 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
python中如何使用虚拟环境
2020/10/14 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
英国景点门票网站:attractiontix
2019/08/27 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
小学师德师风整改措施
2014/10/27 职场文书
西安兵马俑导游词
2015/02/02 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
德劲DE1102数字调谐收音机机评
2022/04/07 无线电