全球疫情可视化实时更新

1. 配置

boostrap为前端框架,echarts可视化,jQuery获取、处理数据

2. 思路

  1. 前端框架搭好,这里不细说
  2. 后端用JQuery从API中获取数据

3. 如何用echarts做全球疫情地图

以累计确诊病例分布图为例

数据源为https://lab.isaaclin.cn/nCoV/api/area?latest=1

获取数据的框架

 $.get("https://lab.isaaclin.cn/nCoV/api/area?latest=1",function (data, status) {//处理数据});

处理Json数据

var arr = [];// 处理数据,成地图需要的数据结构
data.results.forEach(item => {// 循环的过程中,向空数组中加入所需的内容if(item.countryName==item.provinceName){  //这个判断是因为,这个数据还统计了中国省份和城市的数据,所以这个条件用于判断这个元组是否为国家的数据                  arr.push({name: item.countryEnglishName, // name固定value: item.confirmedCount, // value固定nowconfirm: item.currentConfirmedCount, // 当前确诊heal: item.curedCount,//治愈数dead: item.deadCount,//死亡数CName:item.countryName//国家的中文名字});
}
});

因为echarts的world.js对应的国家名是英文的,但是从丁香园获取的国家的英文名与echarts地图里存储的英文名之间可能出现不匹配的问题,因此,我自己一个个筛选了那些名字不匹配的国家,进行名字替换,可能还有没有考虑到的国家。

//统一替换名称不匹配的问题
arr.forEach(item => {if(item.name=='United States of America'){item.name='United States'
}
else if(item.name=='The Islamic Republic of Mauritania'){item.name='Mauritania'
}
else if(item.name=='Kazakstan'){item.name='Kazakhstan'
}
else if(item.name=='Somali'){item.name='Somalia'
}
else if(item.name=='Central African Republic'){item.name='Central African Rep.'
}
else if(item.name=='Papua New Cuinea'){item.name='Papua New Guinea'
}
else if(item.name=='Burma'){item.name='Myanmar'
}
else if(item.name=='Kampuchea (Cambodia )'){item.name='Cambodia'
}
else if(item.name=='Laos'){item.name='Lao PDR'
}
else if(item.name=='SriLanka'){item.name='Sri Lanka'
}
else if(item.name=='Kingdom of Bhutan'){item.name='Bhutan'
}
else if(item.name=='Republic of Serbia'){item.name='Serbia'
}
else if(item.name=='Bosnia and Herzegovina'){item.name='Bosnia and Herz.'
}
else if(item.name=='Democratic Republic of the Congo'){item.name='Dem. Rep. Congo'
}
else if(item.name=='North Macedonia'){item.name='Macedonia'
}
else if(item.name=='Ivory Coast'){item.name='Côte d\'Ivoire'
}
else if(item.CName=='赞比亚共和国'){item.name='Zambia'
}
else if(item.CName=='几内亚比绍'){item.name='Guinea-Bissau'
}
else if(item.CName=='刚果(布)'){item.name='Congo'
}
else if(item.CName=='厄立特里亚'){item.name='Eritrea'
}
else if(item.CName=='黑山'){item.name='Montenegro'
}
else if(item.CName=='吉尔吉斯斯坦'){item.name='Kyrgyzstan'
}
});

echarts配置三个步骤

  1. 初始化

注意,这里的id要与前端设置的div的id一致,这样才能匹配

 var myChart = echarts.init(document.getElementById('confirm'));
  1. 配置
var option = {//配置选项
}
  1. 生成地图

这里的mychart与第一步的mychart相对应

 myChart.setOption(option);

Option配置

也分为四大块

  1. 标题部分

title: {textStyle: {fontSize: 28},subtext: '数据更新于'+time2,subtextStyle: {fontSize: 14,top: '10px'}
},

这里没啥好讲的,我这里用了一个日期格式化的函数,感觉还挺常用的,在这里分享一下。这里面用到了正则表达式,但是我还不是很清楚。

Date.prototype.Format = function (fmt) { //author: meizz   var o = {  "M+": this.getMonth() + 1, //月份   "d+": this.getDate(), //日   "H+": this.getHours(), //小时   "m+": this.getMinutes(), //分   "s+": this.getSeconds(), //秒   "q+": Math.floor((this.getMonth() + 3) / 3), //季度   "S": this.getMilliseconds() //毫秒   };  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));  for (var k in o)  if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));  return fmt;  }
var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");
  1. 设置地图及数据

series: [{type: 'map',map: 'world', // 指定是世界地图data: arr, // 设置地图中的数据label: { // 不显示国家的名字了,很丑show: false},showLegendSymbol: false},
],

参数说明

  1. type: 'map’说明是地图,如果type: 'bar’说明是柱状图

  2. map: ‘world’, // 指定是世界地图,如果map: 'china’说明是中国地图

  3. label show ,显不显示国家名

  4. showLegendSymbol,如果你有多个图例的话,在地图上会有小圆点,很丑,所以去掉

  5. 鼠标悬浮提示

tooltip: { // 鼠标悬浮提示formatter: function (params) { // 允许我们自定义悬浮提示的内容// return 你需要提示的内容return `国家:${params.data.CName}<br/>累计确诊:${params.data.value}<br/>当前确诊:${params.data.nowconfirm}<br/>治愈:${params.data.heal}<br/>死亡:${params.data.dead}<br/>`;}},

这里是可以不用我们写的,echarts会自动返回name 和value数据作为鼠标悬浮提示,但是会出现每行前面都有一个小圆圈,也很丑,所以还是用formatter自定义悬浮提示的内容。

在算死亡率的时候,我想显示小数后两位,且显示为百分比的形式

var deadpercent=(params.data.value*100).toFixed(2)+'%';
  1. 可视化配置

visualMap:[ {type: 'piecewise',seriesIndex:0,pieces: [{ gt: 10000 }, // 大于10000{ gt: 5000, lte: 10000 },{ gt: 1000, lte: 5000 },{ gt: 500, lte: 1000 },  { gt: 100, lte: 500 },  { gt: 10, lte: 100 },   // (200, 300]{ gt: 0, lte: 10 },       ],inRange: {color: ['#ffcfc3', '#eda595', '#d27b64', '#d5462a', '#a8352e', '#6a211d', '#562a2a']},left:10,bottom:20,textStyle:{color:'white'}}]};

参数说明

type: 'piecewise’说明定义的范围是一段一段的,如果是continuous表明是连续映射

pieces:定义的范围,注意如果有小数点的话,是默认四舍五入把小数点去掉的

这里我们需要再设置一个参数precision:2,就可以了

inRange设置的映射的颜色

left、bottom设置图例的位置,相对于原来向右移10,向上移20

textStyle图例文字的一些属性设置

效果图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oOlwda14-1585455053852)(assets/20200329120852426.png)]

最后,一定要多看echarts官网的配置手册https://www.echartsjs.com/zh/option.html#title

是连续映射

pieces:定义的范围,注意如果有小数点的话,是默认四舍五入把小数点去掉的

这里我们需要再设置一个参数precision:2,就可以了

inRange设置的映射的颜色

left、bottom设置图例的位置,相对于原来向右移10,向上移20

textStyle图例文字的一些属性设置

效果图

最后,一定要多看echarts官网的配置手册https://www.echartsjs.com/zh/option.html#title
代码链接https://download.csdn.net/download/Hui_R_Q_XIONGDA/12279887

后续会更新其他的可视化图

全球疫情可视化实时更新相关推荐

  1. Python数据分析:实时更新全国全球疫情分析

    实时更新全国全球疫情分析 简介 步骤流程 准备数据集(获取数据集) 国内数据集 国外数据集 国内分析 生成网页版 国外分析 生成网页版 后记 简介 运用到Python爬虫request库,Excel ...

  2. COVID-19 肺炎疫情数据实时监控(python 爬虫 + pyecharts 数据可视化 + wordcloud 词云图)

    文章目录 [1x00]前言 [2x00]思维导图 [3x00]数据结构分析 [4x00]主函数 main() [5x00]数据获取模块 data_get [5x01]初始化函数 init() [5x0 ...

  3. 周获 4700 Star 全球疫情数据可视化系统,超轻量级中文 OCR……GitHub 一周热点速览...

    作者 | HelloGitHub-小鱼干 来源 | HelloGitHub 摘要:连着两周成绩平平的 GitHub Trending 榜,终于和三月的天气一样进入全面变暖的模式,无论是本周刚开源搭乘 ...

  4. Python+Flask实现全国、全球疫情大数据可视化(二):网页页面布局+echarts可视化中国地图、世界地图、柱状图和折线图

    文章目录 相关文章 一.实现效果 二.页面布局html+css main.html main.css 三.echarts图表制作 1.全国累计趋势折线图ec_l1.js 2.全国趋势变化折线图ec_l ...

  5. GitHub 热榜:中国博士开发可交互全球疫情地图,登上柳叶刀!

    点击上方"视学算法",选择"星标"公众号 重磅干货,第一时间送达 转自量子位,作者郭一璞 一个多月前,当你被困在家里无法出门的时候,可能每天早上第一件事就是看看 ...

  6. 中国博士开发可交互全球疫情地图,登上柳叶刀,GitHub已有4500星成为热榜第四...

    郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一个多月前,当你被困在家里无法出门的时候,可能每天早上第一件事就是看看疫情地图,看看昨天又新增确诊了多少. 现在,中国的疫情逐渐褪去,海外 ...

  7. GitHub热榜第一:中国博士用 ArcGIS Dashboard开发可交互全球疫情地图,登上《柳叶刀》!...

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng AI博士笔记系列推荐: 博士笔记 | ...

  8. df python 增加数据_美国确诊超100万!教你用Python画出全球疫情动态图(附数据下载)...

     CDA数据分析师 出品   [导语]:今天我们教你用Python绘制全球疫情动态图,技术部分请看第二部分. 获取数据:扫描下方公众号回复关键字"全球疫情" 目前,全球新冠疫情还十 ...

  9. 疫情可视化part1

    前言 此系列已完结,共3部分: part1:https://blog.csdn.net/xi1213/article/details/126824752 part2:https://blog.csdn ...

最新文章

  1. pandas编写自定义函数高亮显示(highlight)dataframe中的指定内容(数值)(highlighting a specific values or content of a panda
  2. vs2008.net 单元测试NUnit
  3. Java Persistence API:快速入门
  4. vs2017怎么安装python包,vs2017安装pygame,vs2017安装python第三方包
  5. cc2530单片机是几位单片机_我的单片机学习之路(续1)
  6. AMD劲升6% 业界分析师看好其服务器芯片Ebyc
  7. 演绎类清吧音响怎么选?
  8. 百度地图API之绘制折线及点击事件
  9. Windows下使用命令修改文件权限和所有者
  10. 用js超简单判断图片地址是否存在(404问题)
  11. 中国电信短信网关程序源码
  12. 开心赚手机网赚操作真实赚钱项目揭秘
  13. Tensorflow移动端之如何将自己训练的MNIST模型加载到Android手机上
  14. 织梦免费网站模板手机端无法更新的原因及解决
  15. 雷军:从苦逼撸代码到年入上百亿,成为商界领袖,改变现状,只靠单纯写代码远远不够
  16. android studio 设备调试及Logcat查看
  17. 以太网传输中的NNI与UNI
  18. python--飞机大战(课程设计)
  19. 前端面试题库 面试题 JS难题,做对一半就是高手
  20. 女友没救了~追美国队长还要入手KIMON~

热门文章

  1. android5.0及以上版本的新特性
  2. 日常使用技巧之虚拟键盘的使用
  3. php获取中文拼音(含生僻字,多音字,音标)支持首字母,全拼
  4. 余弦定理实现新闻自动分类算法
  5. linux 修复磁盘 只读,服务器磁盘只读修复过程
  6. 海信android4.4.2电视怎么投屏,海信电视怎样设置投屏
  7. 微信Android客户端架构演进之路
  8. Mac 系统下解压神器The Unarchiver
  9. 关于Vivado实现远程下载bit文件
  10. 北大核心2020_上清华也能选修北大课程?是的!清华北大互相开放部分本科课程...