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 相关文章推荐
js类中获取外部函数名的方法与代码
Sep 12 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
Sep 19 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
JavaScript动态修改弹出窗口大小的方法
Apr 06 Javascript
javascript基础知识分享之类与函数化
Feb 13 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
Jun 27 Javascript
Javascript中的prototype与继承
Feb 06 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
深入理解vue中slot与slot-scope的具体使用
Jan 26 Javascript
详解Angular系列之变化检测(Change Detection)
Feb 26 Javascript
mpvue 如何使用腾讯视频插件的方法
Jul 16 Javascript
微信小程序如何自定义table组件
Jun 29 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
用ODBC的分页显示
2006/10/09 PHP
php 函数使用方法与函数定义方法
2010/05/09 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
为什么要用EJB
2014/04/17 面试题
大学生个人推荐信范文
2013/11/25 职场文书
物理教师自荐信范文
2013/12/28 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
工会换届选举方案
2014/05/21 职场文书
要账委托书范本
2014/09/15 职场文书
公司授权委托书范文
2014/09/21 职场文书
专业见习报告范文
2014/11/03 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript