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

写在前面

该思路借鉴了王正帅同学和张凯鑫同学的博客(地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/12405503.htmlhttps://www.cnblogs.com/wuren-best/p/12404361.html),并在其基础上进行了修改和改进。

题目要求:

  • 在全国地图上使用不同的颜色代表大概确诊人数区间,颜色的深浅表示疫情的严重程度,可以直观了解高危区域;
  • 鼠标移到每个省份会高亮显示、点击鼠标会显示该省具体疫情情况、点击某个省份显示该省疫情的具体情况
  • 显示该省份对应的感染患者人数、疑似患者人数、治愈人数、死亡人数;

    实现思路:

    首先我们理解题目,在全国地图可视化的显示各个区域的疫情情况,则我们首先需要一个中国地图(echarts),然后从数据库读取数据,即可在web中显示,其他的目标可进行各种的样式设置。以下为具体步骤:

  • 1.为地图提供一个div容器,并设置一个id以便绑定地图.
  • 2.导入china.js以便显示中国地图(最下面提供下载地址)。
  • 3.通过ajax从数据库读取数据,并对数据做适配性修改,转换成适合echarts的格式(json转数组)。
  • 4.拿到数据后对echarts的样式进行设置以便符合要求。

效果截图:

部分代码:

前台代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>地图显示界面</title>
<script src="./js/jquery-1.11.3.min.js"></script>
<script src="./js/echarts.min.js"></script>
<script src="./js/china.js"></script>
<script src="./js/china-main-city-map.js"></script>
<style>
* {
    margin: 0;
    padding: 0
}

html, body {
    width: 100%;
    height: 100%;
}

#map {
    width: 800px;
    height: 600px;
    margin: 150px auto;
    border: 1px solid #ddd;
}
/*建议长宽比0.75,符合审美*/
</style>
</head>
<body>
    <div id="map"></div>
    <script>
    var postURL = "/Course3/GetJson";
    var mydata1 = new Array();
    var chart = echarts.init(document.getElementById("map"));
    //设置成同步
    $.ajaxSettings.async = false;
    $.post(postURL, {}, function(rs) {
        var dataList = JSON.parse(rs);
        for(var i=0;i<dataList.length;i++)
        {
            var d={};
            d['name'] = dataList[i].province;
            d['value']  = dataList[i].confirmed_num;
            d['yisi_num'] = dataList[i].yisi_num;
            d['cured_num'] = dataList[i].cured_num;
            d['dead_num'] = dataList[i].dead_num;
            mydata1.push(d);
        }
    });
    //设置成异步
    $.ajaxSettings.async = true;
    var option = {
        //大标题
        title : {
            text : '全国各省疫情图',
            subtext : '',
            x : 'center'
        },
        //设置鼠标移上去的悬浮菜单
        tooltip : {
            formatter : function(params) {
                return params.name + '<br/>'+'确诊人数:'
                        + params.value +"<br/>"+'疑似患者人数:'
                        + params['data'].yisi_num  +"<br/>"+'治愈人数:'
                        + params['data'].cured_num + "<br/>"+'死亡人数:'
                        + params['data'].dead_num;
            }//数据格式化
        },
        //左侧小导航
        visualMap : {
            min : 0,
            max : 500,
            inRange : {
                color : [ '#ffaa85', '#FF7F50','#bc1a19' ]
            //取值范围的颜色
            },
            pieces:[
                {gt:1000},
                {gt:500,lte:999},
                {gte:1,lte:499},
                {value:0,label:'0',color:'#ffffff'},
            ],
            show : true
        //图注
        },
        series : [ {
            type : 'map',
            mapType : 'china',
            data : mydata1,
            nameMap : {
                '南海诸岛' : '南海诸岛',
                '北京' : '北京市',
                '天津' : '天津市',
                '上海' : '上海市',
                '重庆' : '重庆市',
                '河北' : '河北省',
                '河南' : '河南省',
                '云南' : '云南省',
                '辽宁' : '辽宁省',
                '黑龙江' : '黑龙江省',
                '湖南' : '湖南省',
                '安徽' : '安徽省',
                '山东' : '山东省',
                '新疆' : '新疆维吾尔自治区',
                '江苏' : '江苏省',
                '浙江' : '浙江省',
                '江西' : '江西省',
                '湖北' : '湖北省',
                '广西' : '广西壮族自治区',
                '甘肃' : '甘肃省',
                '山西' : '山西省',
                '内蒙古' : "内蒙古自治区",
                '陕西' : '陕西省',
                '吉林' : '吉林省',
                '福建' : '福建省',
                '贵州' : '贵州省',
                '广东' : '广东省',
                '青海' : '青海省',
                '西藏' : '西藏自治区',
                '四川' : '四川省',
                '宁夏' : '宁夏回族自治区',
                '海南' : '海南省',
                '台湾' : '台湾',
                '香港' : '香港',
                '澳门' : '澳门'
            }
        } ]
    };
    chart.setOption(option);
    chart.on('click', function (params) {
        var url = "${pageContext.request.contextPath }/provinceMap?province=" + params.name;
        window.location.href = url;
    });
</script>
</body>
</html>

servlet代码:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        DataService  dataservice = new DataService();
        List<Data> dataList = null;
        List<Data> provinces = null;
        try {
            provinces = dataservice.getData1();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        request.setAttribute("rs", dataList);
        Gson gson = new Gson();
        String json2 = gson.toJson(provinces);
        response.getWriter().write(json2);
    }

以上需要用到的js和jar:

echarts.js可以从官网下载
Google的转json插件和china.js:链接:https://pan.baidu.com/s/1ATbGjFp94DUrvXLE-E4geQ 提取码:hbsm

原文地址:https://www.cnblogs.com/wushenjiang/p/12416561.html

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

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

全国疫情统计可视化地图(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目录的话不用多说,和之前的代码一

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

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

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

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

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

题目描述           问题分析 使用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.SQLExceptio

100行代码实现疫情地图可视化

前言 这个春节,大家都在密切关注着疫情的进展.不少人每天醒来打开手机的第一件事,便是查看家乡的疫情图.你所看到的可能是这样的: 又或者是这样的: 疫情进展牵动着我们的心.作为一名开发者,我们闭门在家为抗击疫情做贡献的同时,也可以继续深耕自己的技术.此文章旨在向大家介绍疫情地图可视化的原理,帮助大家深入理解echart. 核心思路 疫情图的核心在于疫情数据整理以及疫情数据可视化. 疫情数据整理 本文疫情数据是由网易新闻的公开数据整理而成,仅用于demo 展示.数据的具体地址已在代码中说明:此地址是

疫情有望好转,新增指标持续下降|2月12日全国疫情播报

#永洪科技今日疫情播报#最新数据显示:截至2月12日9:00,我国共确诊44631例,疑似21675例,治愈4635例 ,死亡1114例.(注:国家卫建委12日暂未发布最新数据,数据来源参考各省市卫健委总和)整体来看,疫情在向好的趋势发展,湖北地区新增确诊病例继续出现下降,全国不含湖北地区新增确诊也连续几天下滑,青海连续5日无新增病例,西藏地区尚在医学观察的人数为0.但需要注意的是,贵州与其周边地区相比,确诊人数较少,但治愈率最低,死亡与治愈与当地的医疗环境有很大关系,贵州的疫情依然需要重视.疫

全国疫情可视化统计

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib uri="http://java.sun.co

全国疫情精准定点动态更新(.net core)

前言 疫情远比我们在年初想的发展迅速,在过年前还计划着可以亲戚聚聚,结果都泡汤了,开始了自家游. 在初三的时候,看到那个丁香医生,觉得不够详细,比如说我想看下周边城市的疫情情况,但是我地理不好,根本不清楚其他城市的位置. 当时我想的是做一张地图标注各个城市的数量,及严重程度.然后我用python去爬虫,晚上成功了,第二点防爬了.当然拦不住我的,我使用元素爬取的方式也行. 但是这种方式需要运行crome内核渲染,然后要隔一段时间更新,我已经放弃了我买的windows,原因是贵,且自己贫苦. 当时我