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 add event remove event
Apr 07 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
Jan 09 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
jquery实时获取时间的简单实例
Jan 26 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
vue组件内部引入外部js文件的方法
Jan 18 Javascript
Bootstrap table 服务器端分页功能实现方法示例
Jun 01 Javascript
Node.js 中判断一个文件是否存在
Aug 24 Javascript
vue2的 router在使用过程中遇到的一些问题
Apr 13 Vue.js
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 彩色文字实现代码
2009/06/29 PHP
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
php数组一对一替换实现代码
2012/08/31 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php ci框架验证码实例分析
2013/06/26 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
vue中的mvvm模式讲解
2019/01/31 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
基于Python实现一个简单的银行转账操作
2016/03/06 Python
python list转置和前后反转的例子
2019/08/26 Python
python 循环数据赋值实例
2019/12/02 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
文员岗位职责范本
2014/03/08 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
实习介绍信模板
2015/01/30 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript