一、题目要求:
仿照约翰·霍普金斯大学制作全球疫情发布图
二、步骤分析:
1、爬取数据
2、设计页面布局
3、实现具体功能,包括全球确诊人数、死亡人数、痊愈人数,随日期变化的全球确诊人数图表,全球疫情地图显示。
三、具体实现:
1、在数据库建表world_map(MySQL)
2、使用python爬取疫情数据
import json import numpy as np import pymysql import requests from bs4 import BeautifulSoup import datetime url = 'https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0' # 请求地址 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'} # 创建头部信息 response = requests.get(url, headers=headers) # 发送网络请求 content = response.content.decode('utf-8') soup = BeautifulSoup(content, 'html.parser') # 世界确诊getAreaStat listB = soup.find_all(name='script', attrs={"id": "getListByCountryTypeService2true"}) world_messages = str(listB)[95:-21] print(world_messages) world_messages_json = json.loads(world_messages) worldList = [] now_time = datetime.datetime.now().strftime('%Y-%m-%d') for k in range(len(world_messages_json)): worldvalue = (now_time, world_messages_json[k].get('countryType'), world_messages_json[k].get('continents'), world_messages_json[k].get('provinceId'), world_messages_json[k].get('provinceName'), world_messages_json[k].get('provinceShortName'), world_messages_json[k].get('cityName'), world_messages_json[k].get('currentConfirmedCount'), world_messages_json[k].get('confirmedCount'), world_messages_json[k].get('suspectedCount'), world_messages_json[k].get('curedCount'), world_messages_json[k].get('deadCount'), world_messages_json[k].get('locationId'), world_messages_json[k].get('countryShortCode'),) worldList.append(worldvalue) db = pymysql.connect("localhost", "root", "123456", "yiqing", charset='utf8') cursor = db.cursor() sql_world = "INSERT INTO world_map values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" worldTuple = tuple(worldList) print(worldTuple) try: cursor.executemany(sql_world, worldTuple) db.commit() except: print('执行失败,进入回调2') db.rollback() db.close()
3、实现显示治愈人数、死亡人数、确诊人数功能,方法一样。(在最后提供完整的jsp代码)
package servlet; import java.io.IOException; import java.util.Date; import java.text.SimpleDateFormat; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import dao.Dao; import entity.World; /** * Servlet implementation class Getconfirmed */ @WebServlet("/Getconfirmed") public class Getconfirmed extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Getconfirmed() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Dao dao=new Dao(); request.setCharacterEncoding("utf-8"); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String Time = dateFormat.format(now);//格式化然后放入字符串中 String data=Time.substring(0,10); ArrayList<World> list=dao.getconfirmed(data); Gson gson = new Gson(); response.setContentType("text/html;charset=utf-8"); String json = gson.toJson(list); response.getWriter().write(json); System.out.println(json); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
package servlet; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import dao.Dao; import entity.World; /** * Servlet implementation class Getcured */ @WebServlet("/Getcured") public class Getcured extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Getcured() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Dao dao =new Dao(); request.setCharacterEncoding("utf-8"); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String Time = dateFormat.format(now);//格式化然后放入字符串中 String data=Time.substring(0,10); ArrayList<World> list=dao.getcured(data); Gson gson = new Gson(); response.setContentType("text/html;charset=utf-8"); String json = gson.toJson(list); response.getWriter().write(json); System.out.println(json); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
package servlet; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import dao.Dao; import entity.World; /** * Servlet implementation class GetDead */ @WebServlet("/GetDead") public class GetDead extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public GetDead() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Dao dao=new Dao(); request.setCharacterEncoding("utf-8"); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String Time = dateFormat.format(now);//格式化然后放入字符串中 String data=Time.substring(0,10); ArrayList<World> list=dao.getdead(data); Gson gson = new Gson(); response.setContentType("text/html;charset=utf-8"); String json = gson.toJson(list); response.getWriter().write(json); System.out.println(json); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
public ArrayList<World> getconfirmed(String time) { String sql="select * from world_map where now_time like '"+time+"%' "; System.out.println(time); Connection con=null; Statement state=null; ResultSet rs=null; con=DBUtil.getConn(); World bean=null; ArrayList<World> list=new ArrayList<World>(); try { state=con.createStatement(); rs=state.executeQuery(sql); while(rs.next()) { bean=new World(); bean.setProvinceName(rs.getString("provinceName")); bean.setConfirmedCount(rs.getString("confirmedCount")); bean.setSuspectedCount(rs.getString("suspectedCount")); bean.setCuredCount(rs.getString("curedCount")); bean.setDeadCount(rs.getString("deadCount")); //System.out.println(bean.getName()+" "+bean.getConfirmed()); list.add(bean); } } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } DBUtil.close(rs, state, con); return list; } public ArrayList<World> getdead(String time) { String sql="select * from world_map where now_time like '"+time+"%' "; System.out.println(time); Connection con=null; Statement state=null; ResultSet rs=null; con=DBUtil.getConn(); World bean=null; ArrayList<World> list=new ArrayList<World>(); try { state=con.createStatement(); rs=state.executeQuery(sql); while(rs.next()) { bean=new World(); bean.setProvinceName(rs.getString("provinceName")); bean.setConfirmedCount(rs.getString("confirmedCount")); bean.setSuspectedCount(rs.getString("suspectedCount")); bean.setCuredCount(rs.getString("curedCount")); bean.setDeadCount(rs.getString("deadCount")); //System.out.println(bean.getName()+" "+bean.getConfirmed()); list.add(bean); } } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } DBUtil.close(rs, state, con); return list; } public ArrayList<World> getcured(String time) { String sql="select * from world_map where now_time like '"+time+"%' "; System.out.println(time); Connection con=null; Statement state=null; ResultSet rs=null; con=DBUtil.getConn(); World bean=null; ArrayList<World> list=new ArrayList<World>(); try { state=con.createStatement(); rs=state.executeQuery(sql); while(rs.next()) { bean=new World(); bean.setProvinceName(rs.getString("provinceName")); bean.setConfirmedCount(rs.getString("confirmedCount")); bean.setSuspectedCount(rs.getString("suspectedCount")); bean.setCuredCount(rs.getString("curedCount")); bean.setDeadCount(rs.getString("deadCount")); //System.out.println(bean.getCuredCount()); list.add(bean); } } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } DBUtil.close(rs, state, con); return list; }
4、实现随日期变化的全球确诊人数图表
package servlet; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import dao.Dao; import entity.World; /** * Servlet implementation class Dataconfirmed */ @WebServlet("/Dataconfirmed") public class Dataconfirmed extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Dataconfirmed() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Dao dao =new Dao(); request.setCharacterEncoding("utf-8"); ArrayList<World> list=dao.dataconfirmed(); Gson gson = new Gson(); response.setContentType("text/html;charset=utf-8"); String json = gson.toJson(list); response.getWriter().write(json); //System.out.println("日期变化曲线!"); System.out.println(json); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
public ArrayList<World> dataconfirmed() { String sql="select * from world_map "; Connection con=null; Statement state=null; ResultSet rs=null; con=DBUtil.getConn(); World bean=null; int sum=0; int ans=0; String data=null; ArrayList<World> list=new ArrayList<World>(); try { state=con.createStatement(); rs=state.executeQuery(sql); while(rs.next()) { sum++; bean=new World(); bean.setProvinceName(rs.getString("now_time")); if(sum==1) data=bean.getProvinceName(); bean.setConfirmedCount(rs.getString("confirmedCount")); if(data.equals(bean.getProvinceName())) ans+=Integer.parseInt(bean.getConfirmedCount()); else { String timeString=data.substring(0,10); World bean2=new World(); bean2.setProvinceName(timeString); bean2.setConfirmedCount(String.valueOf(ans)); sum=1; ans=0; ans+=Integer.parseInt(bean.getConfirmedCount()); data=bean.getProvinceName(); list.add(bean2); } } bean.setProvinceName(data.substring(0,10)); bean.setConfirmedCount(String.valueOf(ans)); list.add(bean); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } DBUtil.close(rs, state, con); return list; }
5、实现全球疫情地图显示
package servlet; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import dao.Dao; import entity.World; /** * Servlet implementation class Allworld */ @WebServlet("/Allworld") public class Allworld extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Allworld() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); Dao dao = new Dao(); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String Time = dateFormat.format(now);//格式化然后放入字符串中 String data=Time.substring(0,10); ArrayList<World> list=dao.allworld(data); Gson gson = new Gson(); response.setContentType("text/html;charset=utf-8"); String json = gson.toJson(list); response.getWriter().write(json); //System.out.println(json); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
public ArrayList<World> allworld(String time) { String sql="select * from world_map where now_time like '"+time+"%' "; System.out.println(time); Connection con=null; Statement state=null; ResultSet rs=null; boolean flag=false; con=DBUtil.getConn(); World bean=null; ArrayList<World> list=new ArrayList<World>(); try { state=con.createStatement(); rs=state.executeQuery(sql); while(rs.next()) { bean=new World(); bean.setProvinceName(rs.getString("provinceName")); bean.setConfirmedCount(rs.getString("confirmedCount")); bean.setSuspectedCount(rs.getString("suspectedCount")); bean.setCuredCount(rs.getString("curedCount")); bean.setDeadCount(rs.getString("deadCount")); //System.out.println(bean.getName()+" "+bean.getConfirmed()); list.add(bean); } } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } DBUtil.close(rs, state, con); return list; }
6、jsp页面显示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.util.Date"%> <%@page import="java.text.SimpleDateFormat"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="js/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="chart/echarts.min.js"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts/map/js/world.js?_v_=1584687926098"></script> </head> <style> #title { background-color: black; border: solid 1px; font-family: "楷体"; text-align: center; font-color: white; height: 80px; width: 1200px; float: left; } #time { background-color: black; border: solid 1px; font-family: "楷体"; text-align: center; font-color: #333; width: 250px; height: 80px; float: left; } #left { background-color: black; overflow-x: auto; overflow-y: auto; border: solid 1px; font-family: "楷体"; text-align: center; font-color: #333; width: 250px; height: 800px; float: left; } #right { background-color: black; border: solid 1px; font-family: "楷体"; text-align: center; font-color: #333; width: 350px; height: 450px; float: left; } #right1 { background-color: black; overflow-x: auto; overflow-y: auto; border: solid 1px; font-family: "楷体"; text-align: center; font-color: #333; width: 175px; height: 450px; float: left; } #right2 { background-color: black; overflow-x: auto; overflow-y: auto; border: solid 1px; font-family: "楷体"; text-align: center; font-color: #333; width: 170px; height: 450px; float: right; } #mid { background-color: black; border: solid 1px; font-family: "楷体"; text-align: center; font-color: #333; width: 850px; height: 800px; float: left; } #line { background-color: #5c5c5c; border: solid 1px; width: 350px; height: 350px; float: left; } </style> <body onload="onload()"> <% %> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="title"> <h2 style="color: white">全球疫情可视化展示</h2> </div> <div id="time"> <h2 id="showtime" style="color: white">time</h2> </div> <div id="left"></div> <div id="mid"></div> <div id="right"> <div id="right1">死亡人数</div> <div id="right2">治愈人数</div> </div> <div id="line">柱状图</div> <script type="text/javascript"> function onload() { setInterval( "document.getElementById('showtime').innerHTML=new Date().toLocaleString();", 1000); $.post("Getconfirmed", function(data) { var sum = 0; for (var i = 0; i < data.length; i++) sum += parseInt(data[i].confirmedCount); var htmltext = "<h style='color: white;'>全球确诊人数为:" + "<span style='color: red;font-size:50px'>" + sum + "</span></h>"; htmltext += "<table>" for (var i = 0; i < data.length; i++) htmltext += "<tr><td>" + "<span style='color: white;'>" + data[i].provinceName + "</span></td><td><span style='color: red;'>" + data[i].confirmedCount + "</span></td></tr>"; htmltext += "</table>"; $("#left").html(htmltext); }, "json"); $.post("GetDead", function(data) { var sum = 0; for (var i = 0; i < data.length; i++) sum += parseInt(data[i].deadCount); var htmltext = "<h style='color: white;'>全球死亡人数为:" + "<span style='color: red;font-size:50px'>" + sum + "</span></h>"; htmltext += "<table>" for (var i = 0; i < data.length; i++) htmltext += "<tr><td>" + "<span style='color: white;'>" + data[i].provinceName + "</span></td><td><span style='color: red;'>" + data[i].deadCount + "</span></td></tr>"; htmltext += "</table>"; $("#right1").html(htmltext); }, "json"); $.post("Getcured", function(data) { var sum = 0; for (var i = 0; i < data.length; i++) sum += parseInt(data[i].curedCount); var htmltext = "<h style='color: white;'>全球治愈人数为:" + "<span style='color: green;font-size:50px'>" + sum + "</span></h>"; htmltext += "<table>" for (var i = 0; i < data.length; i++) htmltext += "<tr><td>" + "<span style='color: white;'>" + data[i].provinceName + "</span></td><td><span style='color: green;'>" + data[i].curedCount + "</span></td></tr>"; htmltext += "</table>"; $("#right2").html(htmltext); }, "json"); //处理随日期变化的全球确诊人数图 var myChart1 = echarts.init(document.getElementById('line')); myChart1.setOption({ title : { text : '确诊人数变化' }, tooltip : {}, grid : { left : '4%', right : '4%', bottom : '3%', //是否显示刻度标签 containLabel : true }, legend : { data : [ '确诊数' ] }, xAxis : { data : [], axisLabel : { //横坐标全部显示 interval : 0, //横坐标倾斜45度 rotate : -45, }, }, yAxis : {}, series : [ { name : '确诊数', type : 'line', data : [] } ] }) var cname = []; var value = []; //处理这段时间疫情总数变化趋势 $.ajax({ url : "Dataconfirmed", type : "POST", dataType : "JSON", async : true, success : function(data) { for (var i = 0; i < data.length; i++) { cname[i] = data[i].provinceName; value[i] = parseInt(data[i].confirmedCount); } myChart1.setOption({ xAxis : { //放横坐标的数组 data : cname, }, series : [ { name : '确诊数', //每个横坐标对应的数值 data : value } ] }); } }); //处理世界疫情地图 $.ajax({ url : "Allworld", type : "POST", dataType : "JSON", async : true, success : function(data) {//表示处理成功之后做什么,后面跟一个匿名函数。回调函数,表示处理页面处理完数据以后执行这个函数。data表示处理页面返回的值,用形参接收。 var mydata = new Array(0); for (var i = 0; i < data.length; i++) { var d = { }; d["name"] = data[i].provinceName;//.substring(0, 2); d["value"] = data[i].confirmedCount; d["Yisi_num"] = data[i].suspectedCount; d["Cured_num"] = data[i].curedCount; d["Dead_num"] = data[i].deadCount; mydata.push(d); } //初始化echarts实例 var myChart = echarts.init(document.getElementById('mid')); // 指定图表的配置项和数据 var option = { tooltip : { trigger : 'item', formatter : function(params) { return params.name + '<br/>' + '确诊人数 : ' + params.value + '<br/>' + '死亡人数 : ' + params['data'].Dead_num + '<br/>' + '治愈人数 : ' + params['data'].Cured_num + '<br/>' + '疑似患者人数 : ' + params['data'].Yisi_num; }//数据格式化 }, title : { text : '世界疫情图', left : 'center' }, legend : { orient : 'vertical', left : 'left', data : [ '世界疫情图' ] }, visualMap : { type : 'piecewise', pieces : [ { min : 70000, max : 50000000, label : '确诊70000人以上', color : 'red' }, { min : 10000, max : 69999, label : '确诊10000-69999人', color : 'blue' }, { min : 5000, max : 9999, label : '确诊5000-9999人', color : 'purple' }, { min : 1500, max : 4999, label : '确诊1500-4999人', color : 'yellow' }, { min : 500, max : 1499, label : '确诊500-1499人', color : 'gold' }, { min : 0, max : 499, label : '确诊1-499人', color : 'green' }, ], color : [ '#E0022B', '#E09107', '#A3E00B' ] }, toolbox : { show : true, orient : 'vertical', left : 'right', top : 'center', feature : { mark : { show : true }, dataView : { show : true, readOnly : false }, restore : { show : true }, saveAsImage : { show : true } } }, roamController : { show : true, left : 'right', mapTypeControl : { 'world' : true } }, series : [ { name : '确诊数', type : 'map', mapType : 'world', nameMap : { "Canada" : "加拿大", "Turkmenistan" : "土库曼斯坦", "Saint Helena" : "圣赫勒拿", "Lao PDR" : "老挝", "Lithuania" : "立陶宛", "Cambodia" : "柬埔寨", "Ethiopia" : "埃塞俄比亚", "Faeroe Is." : "法罗群岛", "Swaziland" : "斯威士兰", "Palestine" : "巴勒斯坦", "Belize" : "伯利兹", "Argentina" : "阿根廷", "Bolivia" : "玻利维亚", "Cameroon" : "喀麦隆", "Burkina Faso" : "布基纳法索", "Aland" : "奥兰群岛", "Bahrain" : "巴林", "Saudi Arabia" : "沙特阿拉伯", "Fr. Polynesia" : "法属波利尼西亚", "Cape Verde" : "佛得角", "W. Sahara" : "西撒哈拉", "Slovenia" : "斯洛文尼亚", "Guatemala" : "危地马拉", "Guinea" : "几内亚", "Dem. Rep. Congo" : "刚果(金)", "Germany" : "德国", "Spain" : "西班牙", "Liberia" : "利比里亚", "Netherlands" : "荷兰", "Jamaica" : "牙买加", "Solomon Is." : "所罗门群岛", "Oman" : "阿曼", "Tanzania" : "坦桑尼亚", "Costa Rica" : "哥斯达黎加", "Isle of Man" : "曼岛", "Gabon" : "加蓬", "Niue" : "纽埃", "Bahamas" : "巴哈马", "New Zealand" : "新西兰", "Yemen" : "也门", "Jersey" : "泽西岛", "Pakistan" : "巴基斯坦", "Albania" : "阿尔巴尼亚", "Samoa" : "萨摩亚", "Czech Rep." : "捷克", "United Arab Emirates" : "阿拉伯联合酋长国", "Guam" : "关岛", "India" : "印度", "Azerbaijan" : "阿塞拜疆", "N. Mariana Is." : "北马里亚纳群岛", "Lesotho" : "莱索托", "Kenya" : "肯尼亚", "Belarus" : "白俄罗斯", "Tajikistan" : "塔吉克斯坦", "Turkey" : "土耳其", "Afghanistan" : "阿富汗", "Bangladesh" : "孟加拉国", "Mauritania" : "毛里塔尼亚", "Dem. Rep. Korea" : "朝鲜", "Saint Lucia" : "圣卢西亚", "Br. Indian Ocean Ter." : "英属印度洋领地", "Mongolia" : "蒙古", "France" : "法国", "Cura?ao" : "库拉索岛", "S. Sudan" : "南苏丹", "Rwanda" : "卢旺达", "Slovakia" : "斯洛伐克", "Somalia" : "索马里", "Peru" : "秘鲁", "Vanuatu" : "瓦努阿图", "Norway" : "挪威", "Malawi" : "马拉维", "Benin" : "贝宁", "St. Vin. and Gren." : "圣文森特和格林纳丁斯", "Korea" : "韩国", "Singapore" : "新加坡", "Montenegro" : "黑山共和国", "Cayman Is." : "开曼群岛", "Togo" : "多哥", "China" : "中国", "Heard I. and McDonald Is." : "赫德岛和麦克唐纳群岛", "Armenia" : "亚美尼亚", "Falkland Is." : "马尔维纳斯群岛(福克兰)", "Ukraine" : "乌克兰", "Ghana" : "加纳", "Tonga" : "汤加", "Finland" : "芬兰", "Libya" : "利比亚", "Dominican Rep." : "多米尼加", "Indonesia" : "印度尼西亚", "Mauritius" : "毛里求斯", "Eq. Guinea" : "赤道几内亚", "Sweden" : "瑞典", "Vietnam" : "越南", "Mali" : "马里", "Russia" : "俄罗斯", "Bulgaria" : "保加利亚", "United States" : "美国", "Romania" : "罗马尼亚", "Angola" : "安哥拉", "Chad" : "乍得", "South Africa" : "南非", "Fiji" : "斐济", "Liechtenstein" : "列支敦士登", "Malaysia" : "马来西亚", "Austria" : "奥地利", "Mozambique" : "莫桑比克", "Uganda" : "乌干达", "Japan" : "日本", "Niger" : "尼日尔", "Brazil" : "巴西", "Kuwait" : "科威特", "Panama" : "巴拿马", "Guyana" : "圭亚那", "Madagascar" : "马达加斯加", "Luxembourg" : "卢森堡", "American Samoa" : "美属萨摩亚", "Andorra" : "安道尔", "Ireland" : "爱尔兰", "Italy" : "意大利", "Nigeria" : "尼日利亚", "Turks and Caicos Is." : "特克斯和凯科斯群岛", "Ecuador" : "厄瓜多尔", "U.S. Virgin Is." : "美属维尔京群岛", "Brunei" : "文莱", "Australia" : "澳大利亚", "Iran" : "伊朗", "Algeria" : "阿尔及利亚", "El Salvador" : "萨尔瓦多", "C?te d'Ivoire" : "科特迪瓦", "Chile" : "智利", "Puerto Rico" : "波多黎各", "Belgium" : "比利时", "Thailand" : "泰国", "Haiti" : "海地", "Iraq" : "伊拉克", "S?o Tomé and Principe" : "圣多美和普林西比", "Sierra Leone" : "塞拉利昂", "Georgia" : "格鲁吉亚", "Denmark" : "丹麦", "Philippines" : "菲律宾", "S. Geo. and S. Sandw. Is." : "南乔治亚岛和南桑威奇群岛", "Moldova" : "摩尔多瓦", "Morocco" : "摩洛哥", "Namibia" : "纳米比亚", "Malta" : "马耳他", "Guinea-Bissau" : "几内亚比绍", "Kiribati" : "基里巴斯", "Switzerland" : "瑞士", "Grenada" : "格林纳达", "Seychelles" : "塞舌尔", "Portugal" : "葡萄牙", "Estonia" : "爱沙尼亚", "Uruguay" : "乌拉圭", "Antigua and Barb." : "安提瓜和巴布达", "Lebanon" : "黎巴嫩", "Uzbekistan" : "乌兹别克斯坦", "Tunisia" : "突尼斯", "Djibouti" : "吉布提", "Greenland" : "格陵兰", "Timor-Leste" : "东帝汶", "Dominica" : "多米尼克", "Colombia" : "哥伦比亚", "Burundi" : "布隆迪", "Bosnia and Herz." : "波斯尼亚和黑塞哥维那", "Cyprus" : "塞浦路斯", "Barbados" : "巴巴多斯", "Qatar" : "卡塔尔", "Palau" : "帕劳", "Bhutan" : "不丹", "Sudan" : "苏丹", "Nepal" : "尼泊尔", "Micronesia" : "密克罗尼西亚", "Bermuda" : "百慕大", "Suriname" : "苏里南", "Venezuela" : "委内瑞拉", "Israel" : "以色列", "St. Pierre and Miquelon" : "圣皮埃尔和密克隆群岛", "Central African Rep." : "中非", "Iceland" : "冰岛", "Zambia" : "赞比亚", "Senegal" : "塞内加尔", "Papua New Guinea" : "巴布亚新几内亚", "Trinidad and Tobago" : "特立尼达和多巴哥", "Zimbabwe" : "津巴布韦", "Jordan" : "约旦", "Gambia" : "冈比亚", "Kazakhstan" : "哈萨克斯坦", "Poland" : "波兰", "Eritrea" : "厄立特里亚", "Kyrgyzstan" : "吉尔吉斯斯坦", "Montserrat" : "蒙特塞拉特", "New Caledonia" : "新喀里多尼亚", "Macedonia" : "马其顿", "Paraguay" : "巴拉圭", "Latvia" : "拉脱维亚", "Hungary" : "匈牙利", "Syria" : "叙利亚", "Honduras" : "洪都拉斯", "Myanmar" : "缅甸", "Mexico" : "墨西哥", "Egypt" : "埃及", "Nicaragua" : "尼加拉瓜", "Cuba" : "古巴", "Serbia" : "塞尔维亚", "Comoros" : "科摩罗", "United Kingdom" : "英国", "Fr. S. Antarctic Lands" : "南极洲", "Congo" : "刚果(布)", "Greece" : "希腊", "Sri Lanka" : "斯里兰卡", "Croatia" : "克罗地亚", "Botswana" : "博茨瓦纳", "Siachen Glacier" : "锡亚琴冰川地区" }, roam : false, label : { show : false, color : 'blue' }, data : mydata } ] }; //使用指定的配置项和数据显示图表 myChart.setOption(option); }, error : function() {//处理页面出错以后执行的函数。 } }); } </script> </body> </html>