echarts实现中国疫情地图

最近每天早上醒来第一件事就是看看当天新增人数是否减少了,出院了多少,每个省目前还有多少确诊人数,见到最多的就是中国地图的分布图,由于工作需要,自己也使用echarts实现了一个。效果如下:


image.png

一:认识echarts

ECharts,缩写来自 Enterprise Charts,商业级数据图表,是百度的一个开源的数据可视化工具,一个纯 Javascript 的图表库。目前很多商业项目都在使用,不但好用而且是免费。

二:实现步骤

1.官网上面有很多实例可供大家参考,这个是地图实例的链接:https://www.echartsjs.com/examples/en/editor.html?c=doc-example/map-visualMap-pieces&edit=1

2.在页面左侧框中输入以下数据:

option = {
    title: {
        text: '中国疫情图',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        orient: 'vertical',
        left: 'left',
        data: ['中国疫情图']
    },
    visualMap: {
        type: 'piecewise',
        pieces: [
            {min: 1000, max: 1000000, label: '大于等于1000人', color: '#372a28'},
            {min: 500, max: 999, label: '确诊500-999人', color: '#4e160f'},
            {min: 100, max: 499, label: '确诊100-499人', color: '#974236'},
            {min: 10, max: 99, label: '确诊10-99人', color: '#ee7263'},
            {min: 1, max: 9, label: '确诊1-9人', color: '#f5bba7'},
        ],
        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: {
            'china': true
        }
    },
    series: [
        {
            name: '确诊数',
            type: 'map',
            mapType: 'china',
            roam: false,
            label: {
                show: true,
                color: 'rgb(249, 249, 249)'
            },
            data: [
               {
                  name: '北京',
                  value: 212
                }, {
                  name: '天津',
                  value: 60
                }, {
                  name: '上海',
                  value: 208
                }, {
                  name: '重庆',
                  value: 337
                }, {
                  name: '河北',
                  value: 126
                }, {
                  name: '河南',
                  value: 675
                }, {
                  name: '云南',
                  value: 117
                }, {
                  name: '辽宁',
                  value: 74
                }, {
                  name: '黑龙江',
                  value: 155
                }, {
                  name: '湖南',
                  value: 593
                }, {
                  name: '安徽',
                  value: 480
                }, {
                  name: '山东',
                  value: 270
                }, {
                  name: '新疆',
                  value: 29
                }, {
                  name: '江苏',
                  value: 308
                }, {
                  name: '浙江',
                  value: 829
                }, {
                  name: '江西',
                  value: 476
                }, {
                  name: '湖北',
                  value: 13522
                }, {
                  name: '广西',
                  value: 139
                }, {
                  name: '甘肃',
                  value: 55
                }, {
                  name: '山西',
                  value: 74
                }, {
                  name: '内蒙古',
                  value: 34
                }, {
                  name: '陕西',
                  value: 142
                }, {
                  name: '吉林',
                  value: 42
                }, {
                  name: '福建',
                  value: 179
                }, {
                  name: '贵州',
                  value: 56
                }, {
                  name: '广东',
                  value: 797
                }, {
                  name: '青海',
                  value: 15
                }, {
                  name: '西藏',
                  value: 1
                }, {
                  name: '四川',
                  value: 282
                }, {
                  name: '宁夏',
                  value: 34
                }, {
                  name: '海南',
                  value: 79
                }, {
                  name: '台湾',
                  value: 10
                }, {
                  name: '香港',
                  value: 15
                }, {
                  name: '澳门',
                  value: 9
                }
            ]
        }
    ]
};

此时页面右侧就会渲染出中国疫情地图了。以上是Echarts的Example环境,真实项目中需要加入china.js。

3.在自己的项目中如何使用echarts实现疫情图,静态页面代码如下:




  
  
  疫情地图展示
  
  
  
  
  




  
  

4.数据调取
数据使用腾讯的数据:接口地址:https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery34102581268431257997_1582545445186&_=1582545445187

image.png

拿到数据后,发现数据格式是这样子的:

image.png

这个数据是腾讯根据自己的需求组装好的数据格式,我们需要用到的是areaTree下面的children。拿到数据后我们需要处理成图表需要的数据格式。需要的格式是这样子的:

        [{
          name: '北京11',
          value: 212
        }, {
          name: '天津',
          value: 60
        }]

直接上对接数据后的代码:




  
  
  疫情地图展示
  
  
  
  
  
  




  

累计确诊人数如下:

三:知识点解析:

option参数的含义:

  • title:显示图标的标题
  • tooltip:展示提示框,当你鼠标点击某个省份时用来展示对应的确诊人数
  • legend:图例,设置图例展示的位置
  • visualMap:视觉映射,每个颜色代表什么含义
  • series:地图数据可视化,添加data数据

最后再给大家一个友好建议:
1、插件自带的地图省份名字是默认出现在省会城市的位置,导致很多省份的名字有点挤甚至偏移,大家可以打开map/js/china.js

2、检索自己想要更改的省份名字,如湖南
"properties":{"cp":[112.982279,28.19409],"name":"湖南","childNum":3}}
其中cp即表示文字的位置,两个坐标表示经纬度,大家根据需要调整。有兴趣的小伙伴可以试试哦!

对echarts还不熟悉的同学可以先看一遍官方教程哦,地址如下:https://www.echartsjs.com/zh/tutorial.html

疫情中一个个感人的瞬间,每天都是满满的感动,太多感谢的话都会显得那么苍白无力,只希望疫情赶快过去。

更新了2022。。。。。。。。。。。。。。。。最近很多人说地图出不来了,所以补充一下
由于echarts之前的官网不能访问了,所以之前引用的地址无法访问了,现做了如下调整供大家参考:

之前的china.js无法访问了,我网上找了一个,下载下来然后在页面引用,china.js里面乱码不用管。
链接: https://pan.baidu.com/s/1uE3VpxRuNX_IRDVA_ElsBA 提取码: 3nh8



  
    
    
    疫情地图展示
    

    
    
    
    
  

  
    

新增确诊人数如下:

你可能感兴趣的:(echarts实现中国疫情地图)