• 在同一页面中显示多个echart图表


    整理了一下大概有两种做法来实现在同一个页面中显示多个echart图表,废话不说直接上代码。

    1. 在同一个echart对象中绘制多个图表
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <meta http-equiv="X-UA-Compatible" content="ie=edge" />
      <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>
      <title>echart</title>
      <style>
        .chart {
           1500px;
        }
      </style>
    </head>
    
    <body>
      <div id="app">
        <div id="main" class="chart"></div>
      </div>
      <script type="text/javascript">
    
        init();
        function init() {
    
          //每行最多显示4个图表,并自动计算高度
          var num = getRound(3, 50);
          var rowNumber = Math.ceil(Math.sqrt(num));
          if (rowNumber > 4) {
            rowNumber = 4;
          }
          //根据列数计算行数
          var colummNumber = Math.ceil(num / rowNumber);
    
          //上下图表间隔
          var topNum = 30;
          //固定单个图表高度
          var heightNum = 250;
          //计算所需要的高度
          document.getElementById("main").style.height = colummNumber * (heightNum + topNum) + "px";
    
    
    
          // 基于准备好的dom,初始化echarts实例
          var myChart = echarts.init(document.getElementById("main"));
          var grids = [];
          var xAxis = [];
          var yAxis = [];
          var series = [];
          var titles = [];
    
          var xdata = ["第1次", "第2次", "第3次", "第4次", "第5次", "第6次"];
    
          //通过配置xAxi和yAxis的gridIndex  series的xAxisIndex和yAxisIndex 来配套格子
          for (var i = 0; i < num; i++) {
            xAxis.push({
              type: "category",
              data: xdata,
              gridIndex: i
            });
            yAxis.push({
              type: "value",
              gridIndex: i,
              inverse: true,
              splitLine: {
                show: false
              }
            });
            series.push({
              name: "名次",
              type: "line",
              data: getData(6),
              xAxisIndex: i,
              yAxisIndex: i,
    
              label: {
                show: true
              }
            });
    
            grids.push({
              show: true
            });
    
            titles.push({
              textAlign: "center",
              text: "mark" + i,
              textStyle: {
                fontSize: 16,
                fontWeight: "normal"
              }
            });
          }
    
          //通过计算配置各个grid  title的位置
          grids.forEach((grid, idx) => {
            grid.left = ((idx % rowNumber) / rowNumber) * 100 + 3 + "%";
            grid.top = (Math.floor(idx / rowNumber) * (heightNum + topNum)) + top;
    
            grid.width = (1 / rowNumber) * 100 - 6 + "%";
            grid.height = heightNum - 6;
            
            titles[idx].left = parseFloat(grid.left) + parseFloat(grid.width) / 2 + "%";
            titles[idx].top = parseFloat(grid.top);
          });
    
          // 指定图表的配置项和数据
          var option = {
            title: titles,
            xAxis: xAxis,
            yAxis: yAxis,
            series: series,
            grid: grids
          };
    
          // 使用刚指定的配置项和数据显示图表。
          myChart.setOption(option);
        }
    
    
        function getRound(min, max) {
          return parseInt(Math.random() * (max - min + 1) + min);
        }
    
        //获取min-max范围内的随机整数
        function getData(num) {
          var list = [];
          for (var i = 0; i < num; i++) {
            list.push(getRound(1, 100));
          }
          return list;
        }
      </script>
    </body>
    
    </html>
    
    1. 创建多个echart对象并分别绘制图表
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <meta http-equiv="X-UA-Compatible" content="ie=edge" />
      <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>
      <title>echart</title>
      <style>
        .chart {
           600px;
          height: 400px;
        }
      </style>
    </head>
    
    <body>
      <h2>图表测试</h2>
      <div id="app">
      </div>
      <script type="text/javascript">
        init();
        
        function init() {
    
          //每行最多显示4个图表,并自动计算高度
          var num = getRound(3, 10);
          var app = document.getElementById("app");
          var xdata = ["第1次", "第2次", "第3次", "第4次", "第5次", "第6次"];
    
          //通过配置xAxi和yAxis的gridIndex  series的xAxisIndex和yAxisIndex 来配套格子
          for (var i = 0; i < num; i++) {
    
            //创建用于存放图表的div节点
            var el = document.createElement('div');
            el.id = "main" + i;
            el.className = "chart";
            app.appendChild(el);
    
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById("main" + i));
    
            // 指定图表的配置项和数据
            var option = {
              title: {
                text: 'mark' + i,
                left: 'center'
              },
              xAxis: {
                type: "category",
                data: xdata
              },
              yAxis: {
                type: "value",
                splitLine: {
                  show: false
                }
              },
              series: {
                name: "名次",
                type: "line",
                data: getData(6),
                label: {
                  show: true
                }
              }
            };
    
            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);
    
          }
        }
    
        //获取min-max范围内的随机整数
        function getRound(min, max) {
          return parseInt(Math.random() * (max - min + 1) + min);
        }
    
        function getData(num) {
          var list = [];
          for (var i = 0; i < num; i++) {
            list.push(getRound(1, 100));
          }
          return list;
        }
      </script>
    </body>
    
    </html>
    
  • 相关阅读:
    [CSS] media query媒体查询中的minwidth和maxwidth
    [日常] robots.txt允许所有搜索引擎收录
    GOFLY在线客服系统/外贸网站在线客服+多语言支持 外贸网站即时通讯工具/中英文切换教程
    [nginx] 开启nginx反向代理的同时try_files指令排除静态资源请求到后端服务
    [Golang] os.exit()和panic()的区别以及何时使用
    智能在线客服系统源码GOFLY开发日志 3. 获取程序执行的绝对路径
    [javascript] 删除数组中null的元素并重建数组索引
    [微信公众号开发] 创建菜单测试的时候出现错误码40016
    [前端] 项目中的ICONO 纯 CSS 绘制的一套图标库
    [Linux] 使用lsof 查看解决too many open file问题
  • 原文地址:https://www.cnblogs.com/cplemom/p/11123565.html
Copyright © 2020-2023  润新知