全球疫情可视化实时更新
全球疫情可视化实时更新
1. 配置
boostrap为前端框架,echarts可视化,jQuery获取、处理数据
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配置三个步骤
- 初始化
注意,这里的id要与前端设置的div的id一致,这样才能匹配
var myChart = echarts.init(document.getElementById('confirm'));
- 配置
var option = {//配置选项
}
- 生成地图
这里的mychart与第一步的mychart相对应
myChart.setOption(option);
Option配置
也分为四大块
标题部分
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");
设置地图及数据
series: [{type: 'map',map: 'world', // 指定是世界地图data: arr, // 设置地图中的数据label: { // 不显示国家的名字了,很丑show: false},showLegendSymbol: false},
],
参数说明
type: 'map’说明是地图,如果type: 'bar’说明是柱状图
map: ‘world’, // 指定是世界地图,如果map: 'china’说明是中国地图
label show ,显不显示国家名
showLegendSymbol,如果你有多个图例的话,在地图上会有小圆点,很丑,所以去掉
鼠标悬浮提示
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)+'%';
可视化配置
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
后续会更新其他的可视化图
全球疫情可视化实时更新相关推荐
- Python数据分析:实时更新全国全球疫情分析
实时更新全国全球疫情分析 简介 步骤流程 准备数据集(获取数据集) 国内数据集 国外数据集 国内分析 生成网页版 国外分析 生成网页版 后记 简介 运用到Python爬虫request库,Excel ...
- COVID-19 肺炎疫情数据实时监控(python 爬虫 + pyecharts 数据可视化 + wordcloud 词云图)
文章目录 [1x00]前言 [2x00]思维导图 [3x00]数据结构分析 [4x00]主函数 main() [5x00]数据获取模块 data_get [5x01]初始化函数 init() [5x0 ...
- 周获 4700 Star 全球疫情数据可视化系统,超轻量级中文 OCR……GitHub 一周热点速览...
作者 | HelloGitHub-小鱼干 来源 | HelloGitHub 摘要:连着两周成绩平平的 GitHub Trending 榜,终于和三月的天气一样进入全面变暖的模式,无论是本周刚开源搭乘 ...
- Python+Flask实现全国、全球疫情大数据可视化(二):网页页面布局+echarts可视化中国地图、世界地图、柱状图和折线图
文章目录 相关文章 一.实现效果 二.页面布局html+css main.html main.css 三.echarts图表制作 1.全国累计趋势折线图ec_l1.js 2.全国趋势变化折线图ec_l ...
- GitHub 热榜:中国博士开发可交互全球疫情地图,登上柳叶刀!
点击上方"视学算法",选择"星标"公众号 重磅干货,第一时间送达 转自量子位,作者郭一璞 一个多月前,当你被困在家里无法出门的时候,可能每天早上第一件事就是看看 ...
- 中国博士开发可交互全球疫情地图,登上柳叶刀,GitHub已有4500星成为热榜第四...
郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一个多月前,当你被困在家里无法出门的时候,可能每天早上第一件事就是看看疫情地图,看看昨天又新增确诊了多少. 现在,中国的疫情逐渐褪去,海外 ...
- GitHub热榜第一:中国博士用 ArcGIS Dashboard开发可交互全球疫情地图,登上《柳叶刀》!...
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟 报道 | 公众号 CVLianMeng AI博士笔记系列推荐: 博士笔记 | ...
- df python 增加数据_美国确诊超100万!教你用Python画出全球疫情动态图(附数据下载)...
CDA数据分析师 出品 [导语]:今天我们教你用Python绘制全球疫情动态图,技术部分请看第二部分. 获取数据:扫描下方公众号回复关键字"全球疫情" 目前,全球新冠疫情还十 ...
- 疫情可视化part1
前言 此系列已完结,共3部分: part1:https://blog.csdn.net/xi1213/article/details/126824752 part2:https://blog.csdn ...
最新文章
- pandas编写自定义函数高亮显示(highlight)dataframe中的指定内容(数值)(highlighting a specific values or content of a panda
- vs2008.net 单元测试NUnit
- Java Persistence API:快速入门
- vs2017怎么安装python包,vs2017安装pygame,vs2017安装python第三方包
- cc2530单片机是几位单片机_我的单片机学习之路(续1)
- AMD劲升6% 业界分析师看好其服务器芯片Ebyc
- 演绎类清吧音响怎么选?
- 百度地图API之绘制折线及点击事件
- Windows下使用命令修改文件权限和所有者
- 用js超简单判断图片地址是否存在(404问题)
- 中国电信短信网关程序源码
- 开心赚手机网赚操作真实赚钱项目揭秘
- Tensorflow移动端之如何将自己训练的MNIST模型加载到Android手机上
- 织梦免费网站模板手机端无法更新的原因及解决
- 雷军:从苦逼撸代码到年入上百亿,成为商界领袖,改变现状,只靠单纯写代码远远不够
- android studio 设备调试及Logcat查看
- 以太网传输中的NNI与UNI
- python--飞机大战(课程设计)
- 前端面试题库 面试题 JS难题,做对一半就是高手
- 女友没救了~追美国队长还要入手KIMON~
热门文章
- android5.0及以上版本的新特性
- 日常使用技巧之虚拟键盘的使用
- php获取中文拼音(含生僻字,多音字,音标)支持首字母,全拼
- 余弦定理实现新闻自动分类算法
- linux 修复磁盘 只读,服务器磁盘只读修复过程
- 海信android4.4.2电视怎么投屏,海信电视怎样设置投屏
- 微信Android客户端架构演进之路
- Mac 系统下解压神器The Unarchiver
- 关于Vivado实现远程下载bit文件
- 北大核心2020_上清华也能选修北大课程?是的!清华北大互相开放部分本科课程...