• 可视化基础之图表联动


    今天老师布置任务为:实现数据的可视化,并实现图表联动。

    其具体内容为将后台数据以三种图形形式(折现图,柱状图,饼状图)展示与表格展示在界面上,并在鼠标移动到表格上时让图表符合条件的一列高亮,或者点击各种图的数据时将图表中符合条件的一行进行高亮显示。

    基本截图如下:

     

     这个页面的全部代码:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
        <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Insert title here</title>
       <link href="${pageContext.request.contextPath}/css/bootstrap.min.css" rel="stylesheet">
    
        <script src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script>
        
        <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
        
        <script src="../js/bootstrap.min.js"></script>
    </head>
    <body>
    <ul class="nav nav-tabs">
      <li role="presentation" ><a href="${pageContext.request.contextPath}/templete/tongji.jsp">综合检索</a></li>
      <li role="presentation" ><a href="fljs.jsp">分类检索</a></li>
      <li role="presentation" class="active"><a href="${pageContext.request.contextPath}/templete/tubiao.jsp">图表显示</a></li>
    </ul>
      <label>————————请选择检索条件——————————</label>
       <%--分类检索--%>
                        <div class="tab-pane active" id="panel-169507">
                            <form  action="${pageContext.request.contextPath}/tubiao_Servlet" method="post" >
                                <div class="row-fluid">
                                    <div class="span12">
                                        <h4 align="left" >分类检索条件
                                            <select id="jstj" class="form-control" style="height: 40px;display: inline;200px;" name="jstj">
                                                <option value ="0">--请选择--</option>
                                                <option value="jgmc">机构全称</option>
                                                <option value="gkglbm">归口管理单位</option>
                                                <option value="szdy">所在地域</option>
                                                <option value="frdb">法人代表</option>
                                                <option value="lxr">联系人</option>
                                                <option value="jgsx">机构属性</option>
                                                <option value="jsxqmc">技术需求名称</option>
                                                <option value="gjz">关键字</option>
                                                <option value="ntrzjze">拟投入资金总额</option>
                                                <option value="jsxqjjfs">技术需求解决方式</option>
                                                <option value="kjhdlx">科技活动类型</option>
                                                <option value="xkfl">学科分类</option>
                                                <option value="xqjsssly">需求技术所属领域</option>
                                                <option value="xqjsyyhy">需求技术应用行业</option>
                                            </select>
                                            <input type="text" class="form-control" name="value" id="value" style="250px;height: 40px;display: inline" value="${value}">
                                        </h4>
                                        <h4>
                                            检索要求
                                            <select id="jsyq" class="form-control" style=" 200px;height: 40px;display: inline" name="jsyq" >
                                                <option value = "0">模糊查询</option>
                                                <option value = "1">精确查询</option>
                                            </select>
                   选择统计字段                                                                         <select id="tjzd" class="form-control" style=" 200px;height: 40px;display: inline" name="tjzd" >
                                                <option value = "jgsx">机构属性</option>
                                                <option value = "kjhdlx">科技活动类型</option>
                                                <option value = "jsxqjjfs">技术需求解决方式</option>
                                            </select>
                       选择图表类型                                  <select id="tblx" class="form-control" style=" 200px;height: 40px;display: inline" name="tblx">
                                                <option value = "zzt">柱状图</option>
                                                <option value = "zxt">折线图</option>
                                                <option value = "bzt">饼状图</option>
                                            </select>
                                            <input type="submit" class="btn btn-success" style=" 200px;height:30px;position: relative;left: 100px" value="查询">
                                        </h4>
                                    </div>
    
                                </div>
                            </form>
                            
                            
                           <div id="main" style=" 700px;height:400px;" >
                            <script type="text/javascript">
                            $(function() {
                                 if('${tblx}'=="zzt"){
                                     var myChart = echarts.init(document.getElementById('main'));
                                     var arr = new Array();
                                     var index = 0;
                                     <c:forEach items="${listtb}" var="item"> 
                                         arr[index++] = ${item.count};
                                     </c:forEach>
                                     // 指定图表的配置项和数据
                                     var option = {
                                         title: {
                                             text: '统计图表'
                                         },
                                         tooltip: {
                                             show: true
                                         },
                                         legend: {
                                             data:['统计数']
                                         },
                                         xAxis : [
                                             {
                                                 type : 'category',
                                                 axisLabel:{  
                                                      interval:0,//横轴信息全部显示  
                                                      rotate:40,//-30度角倾斜显示  
                                                       },
                                                 data : [
                                                     <c:forEach items="${listtb}" var="item">
                                                     ["${item.type}"],
                                                     </c:forEach>
                                                 ]
                                             }
                                         ],
                                         yAxis : [
                                             {
                                                 type : 'value'
                                             }
                                         ],
                                         series : [
                                             {
                                                 name:'统计数',
                                                 type:'bar',
                                                 data: arr
                                                 
                                             }
                                         ]
                                     };
    
                                     // 使用刚指定的配置项和数据显示图表。
                                     myChart.setOption(option);
                                  }else if('${tblx}'=="zxt"){
                                      var myChart = echarts.init(document.getElementById('main'));
                                      var arr = new Array();
                                      var index = 0;
                                      <c:forEach items="${listtb}" var="item"> 
                                          arr[index++] = ${item.count};
                                      </c:forEach>
    
                                      // 指定图表的配置项和数据
                                      var option = {
                                          title: {
                                              text: '统计图表'
                                          },
                                          tooltip: {
                                              show: true
                                          },
                                          legend: {
                                              data:['统计数']
                                          },
                                          xAxis : [
                                              {
                                                  type : 'category',
                                                  axisLabel:{  
                                                       interval:0,//横轴信息全部显示  
                                                       rotate:40,//-30度角倾斜显示  
                                                        },
                                                  data : [
                                                      <c:forEach items="${listtb}" var="item">
                                                      ["${item.type}"],
                                                      </c:forEach>
                                                  ]
                                              }
                                          ],
                                          yAxis : [
                                              {
                                                  type : 'value'
                                              }
                                          ],
                                          series : [
                                              {
                                                  name:'统计数',
                                                  type:'line',
                                                  data: arr
                                                  
                                              }
                                          ]
                                      };
    
                                      // 使用刚指定的配置项和数据显示图表。
                                      myChart.setOption(option);
                                     }else{
                                       var myChart = echarts.init(document.getElementById('main'));
                                       var arr = new Array();
                                       var index = 0;
                                       <c:forEach items="${listtb}" var="item"> 
                                       arr[index++] = ${item.count};
                                       </c:forEach>
                                       var option = {
                                               tooltip: {
                                                   trigger: 'item',
                                                   formatter: '{a} <br/>{b}: {c} ({d}%)'
                                               },
                                               legend: {
                                                   orient: 'vertical',
                                                   left: 10,
                                                 data : [
                                                     <c:forEach items="${listtb}" var="item">
                                                     '${item.type}',
                                                     </c:forEach>
                                                 ]
                                               },
                                               series: [
                                                   {
                                                       name: '访问来源',
                                                       type: 'pie',
                                                       radius: ['50%', '70%'],
                                                       avoidLabelOverlap: false,
                                                       label: {
                                                           show: false,
                                                           position: 'center'
                                                       },
                                                       emphasis: {
                                                           label: {
                                                               show: true,
                                                               fontSize: '30',
                                                               fontWeight: 'bold'
                                                           }
                                                       },
                                                       labelLine: {
                                                           show: false
                                                       },
                                                       data: [
                                                            <c:forEach items="${listtb}" var="item">
                                                           {value: '${item.count}', name: '${item.type}'},
                                                              </c:forEach>
                                                       ]
                                                   }
                                               ]
                                           };
                                       myChart.setOption(option);
                                     }
                               myChart.on('click',function (params) {
                                    // 获取table下所有的tr
                                    let trs = $("#table tbody tr");
                                    for (var i = 0;i<trs.length;i++){
                                        // 获取tr下所有的td
                                        let tds = trs.eq(i).find("td");
                                        // 先把之前的标记的success去掉
                                        $("#table tbody tr").eq(i).removeClass('success');
                                        var n = 0;
                                        if('${tjzd}'=="jgsx"){
                                            n=4;
                                        }else if('${tjzd}'=="kjhdlx"){
                                            n=5;
                                            
                                        }else{
                                            n=6;
                                        }
                                        // 如果点击图示的名字和table下的某一个行的第一个td的值一样
                                        if (params.name == tds.eq(n).text()){
                                            //设置success状态
                                            $("#table tbody tr").eq(i).addClass('success');
                                            // 跳转到页面指定的id位置
                                            $("html,body").animate({scrollTop:$("#table tbody tr").eq(i).offset().top},1000);
                                        }
                                    }
                                });
                                // 当鼠标落在tr时,显示浮动
                                $("#table tbody").find("tr").on("mouseenter",function () {
                                     var n = 0;
                                  if('${tjzd}'=="jgsx"){
                                      n=4;
                                  }else if('${tjzd}'=="kjhdlx"){
                                      n=5;
                                      
                                  }else{
                                      n=6;
                                  }
                                    // 获得当前匹配元素的个数
                                    let row = $(this).prevAll().length;
                                    // 获得当前tr下td的名字
                                    let name = $("#table tbody").find("tr").eq(row).find("td").eq(n).text();
                                    // 设置浮动
                                    myChart.dispatchAction({ type: 'showTip',seriesIndex: 0, name:name});//选中高亮
                                });
                                // 当鼠标移开tr时候取消浮动
                                 $("#table tbody").find("tr").on("mouseleave",function () {
                                      var n = 0;
                                  if('${tjzd}'=="jgsx"){
                                      n=4;
                                  }else if('${tjzd}'=="kjhdlx"){
                                      n=5;
                                      
                                  }else{
                                      n=6;
                                  }
                                    // 获得当前匹配元素的个数
                                    let row = $(this).prevAll().length;
                                    // 获得当前tr下td的名字
                                    let name = $("#table tbody").find("tr").eq(row).find("td").eq(n).text();
                                    // 设置浮动
                                    myChart.dispatchAction({ type: 'hideTip', name:name});//选中高亮
                                });
                            });
                         </script>
                           </div> 
                            
                            
                            
                            
                            <div class="row-fluid">
                                <div class="span12">
                                    <table class="table table-bordered table-hover" id="table">
                                        <thead>
                                        <tr>
                                            <th>需求名称</th>
                                            <th>学科分类</th>
                                            <th>归口管理单位</th>
                                            <th>机构全称</th>
                                            <th>机构属性</th>
                                            <th>活动类型属性</th>
                                            <th>技术学求解决方式</th>
                                            <th>所在地域</th>
                                            <th>操作</th>
                                        </tr>
                                        </thead>
                                        <tbody>
                                        <c:forEach var="m" items="${list}">
                                            <tr>
                                                <td>${m.jsxqmc}</td>
                                                <td>${m.xkfl}</td>
                                                <td>${m.gkglbm}</td>
                                                <td>${m.jgmc}</td>
                                                <td>${m.jgsx}</td>
                                                <td>${m.kjhdlx}</td>
                                                <td>${m.jsxqjjfs}</td>
                                                <td>${m.szdy}</td>
                                                <td><a href="${pageContext.request.contextPath}/xssh1_Servlet?wjid=${m.wjid}&sy=fljs"><button class="btn btn-success">查看</button></a></td>
                                            </tr>
                                        </c:forEach>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                           
                        </div>
                               <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
                  <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>           <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
                  <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>           <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
                  <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>           <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
                  <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>
              <h1 class="invisible">11</h1>
           <h1 class="invisible">11</h1>    
    </body>
    
    
    </html>
    界面

    实现联动的Jquery语句:

     myChart.on('click',function (params) {
                                    // 获取table下所有的tr
                                    let trs = $("#table tbody tr");
                                    for (var i = 0;i<trs.length;i++){
                                        // 获取tr下所有的td
                                        let tds = trs.eq(i).find("td");
                                        // 先把之前的标记的success去掉
                                        $("#table tbody tr").eq(i).removeClass('success');
                                        var n = 0;
                                        if('${tjzd}'=="jgsx"){
                                            n=4;
                                        }else if('${tjzd}'=="kjhdlx"){
                                            n=5;
                                            
                                        }else{
                                            n=6;
                                        }
                                        // 如果点击图示的名字和table下的某一个行的第一个td的值一样
                                        if (params.name == tds.eq(n).text()){
                                            //设置success状态
                                            $("#table tbody tr").eq(i).addClass('success');
                                            // 跳转到页面指定的id位置
                                            $("html,body").animate({scrollTop:$("#table tbody tr").eq(i).offset().top},1000);
                                        }
                                    }
                                });
                                // 当鼠标落在tr时,显示浮动
                                $("#table tbody").find("tr").on("mouseenter",function () {
                                     var n = 0;
                                  if('${tjzd}'=="jgsx"){
                                      n=4;
                                  }else if('${tjzd}'=="kjhdlx"){
                                      n=5;
                                      
                                  }else{
                                      n=6;
                                  }
                                    // 获得当前匹配元素的个数
                                    let row = $(this).prevAll().length;
                                    // 获得当前tr下td的名字
                                    let name = $("#table tbody").find("tr").eq(row).find("td").eq(n).text();
                                    // 设置浮动
                                    myChart.dispatchAction({ type: 'showTip',seriesIndex: 0, name:name});//选中高亮
                                });
                                // 当鼠标移开tr时候取消浮动
                                 $("#table tbody").find("tr").on("mouseleave",function () {
                                      var n = 0;
                                  if('${tjzd}'=="jgsx"){
                                      n=4;
                                  }else if('${tjzd}'=="kjhdlx"){
                                      n=5;
                                      
                                  }else{
                                      n=6;
                                  }
                                    // 获得当前匹配元素的个数
                                    let row = $(this).prevAll().length;
                                    // 获得当前tr下td的名字
                                    let name = $("#table tbody").find("tr").eq(row).find("td").eq(n).text();
                                    // 设置浮动
                                    myChart.dispatchAction({ type: 'hideTip', name:name});//选中高亮
                                });
  • 相关阅读:
    Visual Studio Code安装Python环境
    Visual Studio Code安装以及C/C++运行环境搭建
    第五场周赛(字符串卡常个人Rank赛)——题解
    SpringCloud学习之二:服务提供者与服务消费者
    SpringCloud学习之一:服务注册中心
    java算法篇之一:动态数组
    Amdahl(阿姆达尔)定律
    org.apache.shiro.session.UnknownSessionException: There is no session with id [xxxx]的解决方案
    RedHat6.9下替换yum源
    微信公众号弹出框在IOS最新系统中点击键盘上的“完成”导致事件无法触发问题
  • 原文地址:https://www.cnblogs.com/yangxionghao/p/13960923.html
Copyright © 2020-2023  润新知