在同一页面中显示多个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 {
      width: 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 {
      width: 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>

原文地址:https://www.cnblogs.com/cplemom/p/11123565.html

时间: 2024-11-05 02:41:38

在同一页面中显示多个echart图表的相关文章

php中调用这个功能可以在web页面中显示hello world这个经典单词

php程序写的时间长了,自然对他所提供的功能了如指掌,他所提供的一大堆功能,真是觉得很好用,但有时候会发现php也缺少一些功能,自己总是会产生为php添加一些自定义的功能的想法.久而久之,终于今天憋不住了,开始动手研究如何添加. 下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构建一个空的php扩展,然后你向里面添加相应的代码就可以完成你自己的功能

如何将servlet中的变量在jsp页面中显示---jsp中的EL表达式

1.EL(Expression Language)表达式 语 法:${},放在body中 2.EL表式一般情况下,从作用域对象中取值作用域对象有四个:pageContext,request,session,application,从小到大 例如: <% int a = 1234; //利用作用域对象设置key-value,即变量 pageContext.setAttribute("a", a); %> -----这是设置在<!DOCTYPE html >标签之上

jauery加入项目中,但是在页面中显示没有找到这个文件--springMVC框架

遇到一件很不爽的事情,自己明明已经把jquery的文件放在了项目中,但是在页面中总是看不到效果,开发者模式提示没有找到文件,当时都要郁闷疯了,后来无意间看到了Eclipse中报的错,怎么与Spring的配置文件相关,就去看看,看到<mvc:resource="/css/**" />这个配置,是css的配置,然后就照毛画虎的写了个js的标签,然后就可以了.我前台写的是basepath/script/jqurey.mini.js String path = request.ge

在JSP页面中显示动态时间

源地址:http://blog.csdn.net/aitcax/article/details/41285305 静态时间: 1.页面首部添加 <%@page import="java.util.Date"%> 2.页面body中需要显示时间的地方使用 <%= new Date().toString() %> 即可. -------另:页面添加刷新按钮------ <input type="button" onclick="j

jsp页面中显示二维码图片

最近做的一个项目需要在前台页面显示二维码:因为以前做过二维码生成方面的东西,就沿用以前的方式:导入qrcode.jar包,然后后台生成图片保存,前台获取图片的路径,并显示.大家可以看得出来这个过程是比较耗时的,一个人测试半小时,会有好几百张二维码图片,那么后台生成的临时二维码图片什么时候删除呢?第一种选择是我前台显示后立即删除,因为系统需求的原因,这样交互会很频繁,影响效率:第二种选择是job定时去删除.两种方式虽然都能解决问题但都有点勉强. 能不能在前台把数据封装成二维码呢?YES,回答如此的

记录一次zookeeper集群其中一节点在hbase web页面中显示Connection rese

集群环境:nn1,view和dn1三节点部署的zookeeper集群,gezookeeper进程均已启动hbase web页面显示zk_dump信息如下日志输出信息如下: shell> tail -f /var/log/zookeeper/zookeeper.log 2018-04-16 09:56:20,000 [myid:3] - INFO [ProcessThread(sid:3 cport:-1)::[email protected]] - Processed session termi

如何将servlet中的变量在jsp页面中显示--普通方法

//一.在servlet中的步骤 //1.获取参数,在地址栏输入 String username = request.getParameter("username"); String password = request.getParameter("password"); String realname = "张三"; String gender = "男"; int age = 22; //2.判读,进行跳转 if (&qu

如何将servlet中的变量在jsp页面中显示--面向对象的方法

//一.在servlet中的步骤//1.获取参数,在地址栏输入 String username = request.getParameter("username"); String password = request.getParameter("password"); //2.创建对象User user = new User(username, password, realname, gender, age); //3.判断,进行跳转if ("zhang

将图片的二进制字节 在HTML页面中显示

两种方法: 后端的一般处理程序:Imge.ashx 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI.WebControls; 6 7 namespace Test 8 { 9 /// <summary> 10 /// Imge 的摘要说明 11 /// </summary> 12 public clas