全国疫情统计可视化(图表)

题目描述

         

问题分析

  使用Echarts处理柱形图

源码

  前台的目录结构

  构建路径

  后台的路径

  后台的代码

  

 1 package com.pjh.DBUtils;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8
 9 import net.sf.json.JSONArray;
10 import net.sf.json.JSONObject;
11
12 public class DBUtils {
13
14     private static String URL = "jdbc:mysql://localhost:3306/yiqing?useUnicode=true&characterEncoding=GB18030&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true";
15     private static String username = "root";
16     private static String password = "123456";
17
18     public static Connection getConnection() {
19         try {
20             Class.forName("com.mysql.cj.jdbc.Driver");
21             return DriverManager.getConnection(URL, username, password);
22         } catch (Exception e) {
23             System.out.println("SQL CONNECTION FAILED!");
24             e.printStackTrace();
25         }
26         return null;
27     }
28
29     public static String queryDataByDate(String date) {
30         Connection connection = null;
31         PreparedStatement preparedStatement = null;
32         ResultSet resultSet = null;
33         JSONArray jsonArray = new JSONArray();
34
35         String province = "";
36         String sql = "select * from info where Date like ‘"+date+"%‘ and  City=‘‘";
37         try {
38             connection = getConnection();
39             preparedStatement = connection.prepareStatement(sql);
40             resultSet = preparedStatement.executeQuery();
41             while (resultSet.next()) {
42                 province += resultSet.getString("Province")+";";
43             }
44             resultSet.close();
45             String string[] = province.split(";");
46             for (int i = 0; i < string.length; i++) {
47                 if (string[i].trim().equals("")) {
48                     continue;
49                 }
50                 sql = "select sum(Confirmed_num),sum(Yisi_num),sum(Cured_num),sum(Dead_num) from info where Date like ‘"
51                         +date+"%‘ and Province=‘"+string[i]+"‘";
52                 preparedStatement = connection.prepareStatement(sql);
53                 resultSet = preparedStatement.executeQuery();
54                 resultSet.next();
55                 JSONObject jsonObject = new JSONObject();
56                 jsonObject.put("name", string[i]);
57                 jsonObject.put("num", resultSet.getInt(1));
58                 jsonObject.put("yisi", resultSet.getString(2));
59                 jsonObject.put("cure", resultSet.getString(3));
60                 jsonObject.put("dead", resultSet.getString(4));
61                 resultSet.close();
62                 sql = "select * from info where Date like ‘"+date+"%‘ and Province=‘"+string[i]+"‘";
63                 preparedStatement = connection.prepareStatement(sql);
64                 resultSet = preparedStatement.executeQuery();
65                 resultSet.next();
66                 jsonObject.put("code", resultSet.getString("Code"));
67                 resultSet.close();
68                 jsonArray.add(jsonObject);
69             }
70             return jsonArray.toString();
71         } catch (SQLException e) {
72             e.printStackTrace();
73             return null;
74         }
75     }
76 }
 1 package com.pjh.servlet;
 2
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9
10 import com.pjh.DBUtils.DBUtils;
11
12 /**
13  * Servlet implementation class queryDataServlet
14  */
15 @WebServlet("/queryDataServlet")
16 public class queryDataServlet extends HttpServlet {
17     private static final long serialVersionUID = 1L;
18
19     /**
20      * @see HttpServlet#HttpServlet()
21      */
22     public queryDataServlet() {
23         super();
24         // TODO Auto-generated constructor stub
25     }
26
27     /**
28      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
29      */
30     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
31         response.getWriter().append("Served at: ").append(request.getContextPath());
32     }
33
34     /**
35      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
36      */
37     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
38         request.setCharacterEncoding("utf-8");
39         response.setContentType("text/html;charset=UTF-8");
40         response.getWriter().write(DBUtils.queryDataByDate(request.getParameter("date")));
41     }
42
43 }

  前台的代码

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 <meta charset="UTF-8">
  5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  6 <link rel="stylesheet" href="layui/css/layui.css">
  7 <script src="js/echarts.min.js"></script>
  8 <script src="js/jquery.min.js"></script>
  9 <style>
 10             #top {
 11                 width: auto;
 12                 height: 30px;
 13                 text-align: center;
 14                 margin: auto;
 15                 padding-top: 5px;
 16                 background-color: gray;
 17             }
 18         </style>
 19 <title>YiQing</title>
 20 </head>
 21 <body>
 22
 23     <div id="top">
 24             请选择日期:<input type="date" name="date"><button>查询</button>
 25     </div>
 26
 27     <div id="main" style="width: 100%;height:550px;overflow: auto;"></div>
 28     <script type="text/javascript">
 29          var myChart = echarts.init(document.getElementById(‘main‘));
 30          myChart.showLoading();
 31          var names=[];
 32          var nums=[];
 33         $("button").click(function(){
 34             names=[];
 35             nums=[];
 36             $(".head").empty();
 37             $(".main").empty();
 38             $.post(
 39                 ‘http://localhost:8086/yiqing/queryDataServlet‘,
 40                 {"date":$("input[name=date]").val()},
 41                 function(msg){
 42                     var json=JSON.parse(msg);
 43                     var size=json.length;
 44                     for(i=0;i<size;i++){
 45                         names.push(json[i].name);
 46                         nums.push(parseInt(json[i].num));
 47                     }
 48
 49                     myChart.hideLoading();
 50                     var option = {
 51                             title: {
 52                                 text: $("input[name=date]").val()+‘确诊人数‘
 53                             },
 54                             tooltip: {},
 55                             legend: {
 56                                 data:[‘确诊人数‘]
 57                             },
 58                             grid: {
 59                                 y2: 150
 60                             },
 61                             xAxis: {
 62                                 type : ‘category‘,
 63                                 data: names,
 64                                 axisLabel:{
 65                                     interval:0,
 66                                     rotate:-17,
 67                                     }
 68                             },
 69                             yAxis: {},
 70                             series: [{
 71                                 name: ‘确诊人数‘,
 72                                 type: ‘bar‘,
 73                                 data: nums
 74                             }]
 75                         };
 76                     myChart.setOption(option);
 77                     tr="<tr><th>省份</th><th>确诊人数</th><th>疑似人数</th><th>治愈人数</th><th>死亡人数</th><th>编码</th></tr>";
 78                     $(‘.head‘).append(tr);
 79                     for(i=0;i<size;i++)
 80                         $(‘.main‘).append("<tr></tr>");
 81                     $(‘.main tr‘).each(function(i){
 82                         $(this).append("<td>"+json[i].name+"</td>");
 83                         $(this).append("<td>"+json[i].num+"</td>");
 84                         $(this).append("<td>"+json[i].yisi+"</td>");
 85                         $(this).append("<td>"+json[i].cure+"</td>");
 86                         $(this).append("<td>"+json[i].dead+"</td>");
 87                         $(this).append("<td>"+json[i].code+"</td>");
 88                     })
 89                 }
 90
 91             )
 92         })
 93     </script>
 94     <table class="layui-table">
 95         <thead class="head">
 96             </thead>
 97         <tbody class="main"></tbody>
 98     </table>
 99 </body>
100 </html>

结果样例

  

  

原文地址:https://www.cnblogs.com/52bb/p/12424021.html

时间: 2024-08-30 15:33:07

全国疫情统计可视化(图表)的相关文章

课堂练习-全国疫情统计可视化地图

1 第一阶段目标:导入全国疫情数据库payiqing.sql(MySQL数据库).可以按照时期查询各个省市的疫情统计表格.以折线图或柱状图展示某天的全国各省的确诊人数. 1.首先完成数据库的导入,然后编写数据库代码.建立DBUtil.java.实现相关数据的查询,并转化为json,以供Echart柱状图获取数据使用. package dbutil; import java.sql.Connection; import java.sql.Date; import java.sql.DriverMa

全国疫情统计可视化地图(2)

第二阶段的要求是通过地图展示全国疫情的情况. 1:首先要下载中国地图的插件 china.js  ,由于目前Echarts官网已经不提供地图的下载.下面是echarts.min.js  china.js和各个省份地图的js的资源,方便大家下载. 链接: https://pan.baidu.com/s/1MFt-0LqAUQXzpiI1qy-Q0w 提取码: q7y4 2: 要将数据库中数据传进地图去,自然要书写相应的bean目录.dao层以及servlet.bean目录的话不用多说,和之前的代码一

全国疫情统计可视化地图(第一阶段)

DBUtil.java package com.helloechart; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { public static String db_url = "jdbc:mysql://loca

全国疫情统计可视化地图(3)

第三阶段是数据下钻,要求点击省可以下钻到各个地市的数据显示. 1:首先,要显示相应的地图需要导入相应的js 上一篇文章中分享的链接同样包含各个省份的js  链接: https://pan.baidu.com/s/1MFt-0LqAUQXzpiI1qy-Q0w 提取码: q7y4.点击省可以跳转到地市,所以需要在 myChart.on中加一个跳转的语句.语句中加上时间和省份,用于查找. myChart.on('click', function (params) { var url = "Hebei

JFreeChart与AJAX+JSON+ECharts两种处理方式生成热词统计可视化图表

本篇的思想:对HDFS获取的数据进行两种不同的可视化图表处理方式.第一种JFreeChar可视化处理生成图片文件查看.第二种AJAX+JSON+ECharts实现可视化图表,并呈现于浏览器上.   对此,给出代码示例,通过网络爬虫技术,将上传到HDFS的新浪网新闻信息实现热词统计功能,通过图表的柱状图来显示出来. ------> 目录: 1.JFreeChart可视化处理(生成本地图片) [1]HDFS文件读取 [2]JDFreeChart库应用 2.AJAX+JSON+EChart生成可视化图

全国疫情统计地图可视化(1)

写在前面 该思路借鉴了王正帅同学和张凯鑫同学的博客(地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/12405503.html和 https://www.cnblogs.com/wuren-best/p/12404361.html),并在其基础上进行了修改和改进. 题目要求: 在全国地图上使用不同的颜色代表大概确诊人数区间,颜色的深浅表示疫情的严重程度,可以直观了解高危区域: 鼠标移到每个省份会高亮显示.点击鼠标会显示该省具体疫情情况.点

结对第一次—某次疫情统计可视化(原型设计)

https://w7if3z.axshare.com/#id=mx82vm&p=page_1 原文地址:https://www.cnblogs.com/hylog/p/12370065.html

号外号外:9月21号关于Speed-BI 《全国人口统计数据分析》开讲了

引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中? 本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中,通过熟练使用云平台可视化技巧,将枯燥的数字灵活化.可动化:通过统计图表的应用,将灵活可动的图表多样化.专业化,全方位多视角观察.分析案例相关数据,达到报表目的清晰.界面简洁.可分析维度多.反馈性强等目标,操作过程从数据整理至报表生成一步到位,主要涉及分析意图挖掘.指标判断选择.适用图表选择.多维度选择.报表快速生

统计分析基础 (一) 数据统计与图表

统计分析基础 (一)数据统计与图表 1 数据统计 1.1 统计学 统计学是在数据分析的基础上,自17世纪中叶产生并逐步发展起来的一门学科.它是研究如何测定.收集.整理.归纳和分析反映数据,以便给出正确消息的科学.统计广泛地应用在各门学科,从自然科学.社会科学到人文学科,甚至被用来工商业及政府的情报决策之上,目前比较热门的应用:经济学,医学,心理学等.随着大数据(Big Data)时代来临,统计的面貌也逐渐改变,与信息.计算等领域密切结合,是数据科学(Data Science)中的重要主轴之一.