Layer+Echarts构建弹出层折线图的方法


Posted in Javascript onSeptember 25, 2019

layer是一款口碑极佳的web弹层组件,她具备全方位的解决方案,致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富而友好的操作体验。

在中国可视化生态系统中,ECharts 通过提供方便丰富的可视化图表,极大缩短了用户与数据的距离。个人认为是最好用的可用来生成图表的插件。

现在使用Layer和Echarts构建弹出层折线图。

下载好所需要用到的工具包,Echarts下载为echarts.min.js,Layer在layer官网下载之后将layer文件夹放到项目之中。

在HTML文件中引入

<script src="js/jquery-1.11.1.min.js"></script>
  <!-- 你必须先引入jQuery1.8或以上版本 -->
  <script src="js/layer/layer.js"></script>
  <script src="js/bootstrap.min.js"></script>
   <!-- 引入 ECharts 文件 -->
  <script src="js/echarts.min.js"></script>

页面内容

<body>
    <button id="test2">Layer+Echarts构建弹出层折线图</button>
    <div id="speedChart" style="display: none;">
                  <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
                  <div id="speedChartMain" style="width: 600px; height: 400px;"></div>
                </div>
    <div id="dfd">
      <span>Layer+Echarts构建弹出层折线图</span>
      <p>Layer+Echarts构建弹出层折线图</p>
    </div>

</body>

js脚本

<script type="text/javascript">
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('speedChartMain'));
    option = {
  tooltip: {
    trigger: 'axis'
  },
  legend: {
    data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
  },
  grid: {
    left: '3%',
    right: '4%',
    bottom: '3%',
    containLabel: true
  },
  toolbox: {
    feature: {
      saveAsImage: {}
    }
  },
  xAxis: {
    type: 'category',
    boundaryGap: false,
    data: ['周一','周二','周三','周四','周五','周六','周日']
  },
  yAxis: {

    type: 'value'
  },
  series: [
    {
      name:'邮件营销',
      type:'line',
      stack: '总量',
      data:[120, 132, 101, 134, 90, 230, 210]
    },
    {
      name:'联盟广告',
      type:'line',
      stack: '总量',
      data:[220, 182, 191, 234, 290, 330, 310]
    },
    {
      name:'视频广告',
      type:'line',
      stack: '总量',
      data:[150, 232, 201, 154, 190, 330, 410]
    },
    {
      name:'直接访问',
      type:'line',
      stack: '总量',
      data:[320, 332, 301, 334, 390, 330, 320]
    },
    {
      name:'搜索引擎',
      type:'line',
      stack: '总量',
      data:[820, 932, 901, 934, 1290, 1330, 1320]
    }
  ]
};
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    //弹出一个页面层
    $('#test2').on('click', function() {
      layer.open({
        title:'hello world',
        type: 1,
        shade: false,
        area: ['620px', '460px'],
        shadeClose: false, //点击遮罩关闭
        content: $("#speedChart")
      });
    });
  </script>

预览

当然以上是静态加载,我们平常使用最多的是异步加载,修改一下代码即可:

<div id="speedChart" style="display: none;">
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="speedChartMain" style="width: 600px; height: 400px;"></div>
</div>
$(document).ready(function() {
      option = {
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            data:[]
          },
          grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
          },
          toolbox: {
            feature: {
              saveAsImage: {}
            }
          },
          xAxis: {
            type: 'category',
            boundaryGap: false,
            data: []
          },
          yAxis: {
            type: 'value'
          },
          series: []
        };

      //按钮提交表单数据
      $("#subSpeed").click(function(){
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('speedChartMain'));       
        // 使用刚指定的配置项和数据显示图表。 
        myChart.setOption(option);
        var url=$("#speedFrom").attr("action");
        var times=[];  //?r?数组(实际用来盛放X轴坐标值)
        var speeds=[];  //速度数组(实际用来盛放Y坐标值)
        $.post(url,$("#speedFrom").serialize(),
          function(data, status){
            if(data!=null){
              for (var i = 0; i < data.length; i++) {
                times.push(data[i].timeStamp);
                speeds.push(data[i].speed);
              }
  //之前option中legend和 XAxis的data,series 为空,所以现在将数据填充进去
              myChart.setOption({    //加载数据图表
                legend: {
                  data:[$("#roads").val()]
                },
                xAxis: {
                  data: times
                },
                series: [{
                  // 根据名字对应到相应的系列
                  name: $("#roads").val(),
                  type:'line',
                  data: speeds
                }]
              });
            }

            layer.open({
              title:'折线图',
              type: 1,
              shade: false,
              area: ['620px', '460px'],
              shadeClose: true, //点击遮罩关闭
              content: $("#speedChart")
            });
        },"json");
      });
    });

以上这篇Layer+Echarts构建弹出层折线图的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
Dec 28 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
fmt:formatDate的输出格式详解
Jan 09 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
Aug 01 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
Nov 01 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
15位和18位身份证JS校验的简单实例
Jul 18 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
纯javascript实现选择框的全选与反选功能
Apr 08 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
axios实现简单文件上传功能
Sep 25 #Javascript
layer弹出层取消遮罩的方法
Sep 25 #Javascript
QML实现圆环颜色选择器
Sep 25 #Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 #Javascript
微信小程序实现一张或多张图片上传(云开发)
Sep 25 #Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
Sep 25 #Javascript
layer 关闭指定弹出层的例子
Sep 25 #Javascript
You might like
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php中的数组操作函数整理
2008/08/18 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
Chrome Web App开发小结
2014/09/04 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
js制作提示框插件
2020/12/24 Javascript
python实现字符串和日期相互转换的方法
2015/05/13 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python输出pdf文档的实例
2020/02/13 Python
Python必须了解的35个关键词
2020/07/16 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
业务总经理岗位职责
2014/02/03 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android