可视化 | echarts中国地图散点图

news2024/11/25 22:24:22

改编自echarts添加地图散点
在这里插入图片描述

📚改编点

  • roam: false:不允许放缩拖动

  • 地图颜色修改

     geo: {
        show: true,
        top: '15%',
        map: name,
        label: {
            normal: {
                show: false
            },
            emphasis: {
                show: true,
                color: "#fff",
            }
        },
        roam: false,
        itemStyle: {
            normal: {
                areaColor: '#ebeee8',
                borderColor: '#b3bda9',
            },
            emphasis: {
                areaColor: '#4068b2',
            }
        }
    },
    
  • 地图位置样式修改,使地图在水平方向上居中显示

    #china-map {
        width: 1200px;
        height: 1000px;
        position: absolute;
        left: calc(50% - 600px);
        top:0px;
    }
    
  • 散点大小梯度设置

    symbolSize: function (val) { // 设置散点大小
        let value = val[2];
        if (value < 10) {
            return 10;
        } else if (value < 40) {
            return 12;
        } else if (value < 70) {
            return 14;
        } else if (value < 100) {
            return 16;
        } else {
            return 18;
        }
    },
    
  • 散点颜色梯度设置

    color: function (res) {
       let value = res.value[2];
        // 根据数值大小调整散点的颜色
        if (value < 10) {
            return "#f3807b";
        } else if (value < 40) {
            return "#e6534c";
        } else if (value < 70) {
            return "#c23c31";
        } else if (value < 100) {
            return "c32b28";
        } else {
            return "#a81410";
        }
    },
    

📚final

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>中国热门研究地区分布</title>
    <style>
        body {
            margin: 0 auto;
        }
    
        #china-map {
            width: 1200px;
            height: 1000px;
            position: absolute;
            left: calc(50% - 600px);
            top:0px;
        }
    </style>
</head>

<body>
    <div id="china-map"></div>
</body>

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.7.0/echarts.min.js"></script>
<script>
    let publicUrl = 'https://geo.datav.aliyun.com/areas_v2/bound/';
    async function initChart() {
        let chart = echarts.init(document.getElementById('china-map'));
        let alladcode = await getGeoJson('all.json')
        let chinaGeoJson = await getGeoJson('100000_full.json')
        initEcharts(chinaGeoJson, '中国热门研究地区分布', chart, alladcode)
    }
    initChart();

    // 每个地区的数据
    let mapData = [
        {
            name: "北京市",
            value: 279
        },
        {
            name: "上海市",
            value: 41
        },
        {
            name: "天津省",
            value: 11
        },
        {
            name: "重庆市",
            value: 7
        },
        {
            name: "河南省",
            value: 2
        },
        {
            name: "云南省",
            value: 2
        },
        {
            name: "辽宁省",
            value: 12
        },
        {
            name: "黑龙江省",
            value: 17
        },
        {
            name: "湖南省",
            value: 21
        },
        {
            name: "安徽省",
            value: 31
        },
        {
            name: "山东省",
            value: 50
        },
        {
            name: "江苏省",
            value: 45
        },
        {
            name: "浙江省",
            value: 58
        },
        {
            name: "江西省",
            value: 4
        },
        {
            name: "湖北省",
            value: 48
        },
        {
            name: "甘肃省",
            value: 1
        },
        {
            name: "山西省",
            value: 3
        },
        {
            name: "陕西省",
            value: 46
        },
        {
            name: "吉林省",
            value: 4
        },
        {
            name: "福建省",
            value: 9
        },
        {
            name: "广东省",
            value: 82
        },
        {
            name: "四川省",
            value: 38
        },
        {
            name: "台湾省",
            value: 2
        },
        {
            name: "香港特别行政区",
            value: 188
        },
        {
            name: "澳门特别行政区",
            value: 10
        },
    ]

    //echarts绘图
    function initEcharts(geoJson, name, chart, alladcode) {
        //获取当前显示地图下方地市的坐标点数据; 用于气泡显示
        let geoCoordMap = {};
        // 获取地区详细信息
        let mapFeatures = geoJson.features;
        // 遍历获取每个地区的经纬度
        mapFeatures.forEach(function (v, i) {
            // 获取当前地区名
            let name = v.properties.name;
            if (name) {
                // 获取当前地区的经纬度
                geoCoordMap[name] = v.properties.center;
            }
        });
        //将data数据进入方法,取需要的参数; 用于气泡显示
        let convertData = function (data) {
            var res = [];
            data.forEach(item => {
                // 获取当前省份的经纬度坐标
                let geoCoord = geoCoordMap[item.name];
                if (geoCoord) {
                    res.push({
                        // name 表示地区名称
                        name: item.name,
                        // value数据格式为:[113.665412, 34.757975, '200']
                        value: geoCoord.concat(item.value)
                    });
                }
            })
            return res;
        };

        echarts.registerMap(name, geoJson);
        var option = {
            title: {
                text: name,
                left: 'center',
                top: '10%',
            },
            //鼠标经过展示数据方法
            tooltip: {
                triggerOn: "mousemove",
                formatter: function (params) {
                    if (isNaN(params.value)) {
                        params.value = 0
                    }
                    if (params.seriesName === '散点') {
                        params.value = params.data.value[2]
                    }
                    var html = '<span>' + params.name + ':</span><br/>'
                    html += '<span>值:' + params.value + '</span><br/>'
                    return html
                },
                backgroundColor: 'rgba(29, 38, 71)',
                // 额外附加的阴影
                extraCssText: 'box-shadow:0 0 4px rgba(11, 19, 43,0.8)',
            },
            geo: {
                show: true,
                top: '15%',
                map: name,
                label: {
                    normal: {
                        show: false
                    },
                    emphasis: {
                        show: true,
                        color: "#fff",
                    }
                },
                roam: false,
                itemStyle: {
                    normal: {
                        areaColor: '#ebeee8',
                        borderColor: '#b3bda9',
                    },
                    emphasis: {
                        areaColor: '#4068b2',
                    }
                }
            },
            //进行气泡标点
            series: [
                {
                    type: 'map',
                    map: mapData,
                    geoIndex: 0,
                    aspectScale: 0.75, //长宽比
                    animation: true,
                    data: mapData
                },
                {
                    name: '散点', // 自定义名称
                    type: 'effectScatter', // scatter  effectScatter  
                    coordinateSystem: 'geo', // 设置坐标系类型
                    data: convertData(mapData), // 设置散点位置和数据
                    symbolSize: function (val) { // 设置散点大小
                        let value = val[2];
                        if (value < 10) {
                            return 10;
                        } else if (value < 40) {
                            return 12;
                        } else if (value < 70) {
                            return 14;
                        } else if (value < 100) {
                            return 16;
                        } else {
                            return 18;
                        }
                    },
                    
                    showEffectOn: 'render',
                    rippleEffect: {
                        brushType: 'stroke'
                    },
                    hoverAnimation: true, // 是否显示鼠标悬浮动画
                    label: {
                        // 静态显示时的样式
                        normal: {
                            show: false, 
                            formatter: function (data) { // 显示模板
                                return data.value[2]
                            },
                            position: 'bottom', // 显示位置

                        },
                        // // 鼠标悬浮上去的样式
                        // emphasis: {
                        //     color: "#108B96",
                        // },
                    },
                    
                    itemStyle: {
                        normal: {
                            color: function (res) {
                                let value = res.value[2];
                                // 根据数值大小调整散点的颜色
                                if (value < 10) {
                                    return "#f3807b";
                                } else if (value < 40) {
                                    return "#e6534c";
                                } else if (value < 70) {
                                    return "#c23c31";
                                } else if (value < 100) {
                                    return "c32b28";
                                } else {
                                    return "#a81410";
                                }
                            },
                        },
                        // // 鼠标悬浮上去的样式
                        // emphasis: {
                        //     color: "#108B96",
                        // },
                    },
                    zlevel: 3
                }
            ]
        };

        chart.setOption(option);
        // 解绑click事件
        chart.off("click");
        //给地图添加监听事件
        chart.on('click', async params => {
            // 获取当前点击的地图code
            let clickRegion = alladcode.find(areaJson => areaJson.name === params.name);
            // 获取要获取地图的json名称
            let regionJsonName = clickRegion.adcode + '_full.json'
            // 获取点击的区域名称
            let cityName = params.name
            // 判断当前点击的地图等级,如果是区级,则再次点击时重新回到全国的数据
            if (clickRegion.level === 'district') {
                regionJsonName = '100000_full.json'
                cityName = '中国热门研究地区分布'
            }
            // 根据地图code获取
            getGeoJson(regionJsonName).then((result) => {
                initEcharts(result, cityName, chart, alladcode)
            })
        })
    }
    
    //获取地图json数据
    async function getGeoJson(jsonName) {
        return await $.get(publicUrl + jsonName)
    }
</script>
 
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1190964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP ABAP基础语法-Excel上传(十)

EXCEL BDS模板上传及赋值 上传模板事务代码&#xff1a;OAER l 功能代码&#xff1a;向EXCEL模板中写入数据示例代码如下 REPORT ZEXCEL_DOI. “doi type pools TYPE-POOLS: soi. *SAP Desktop Office Integration Interfaces DATA: container TYPE REF TO cl_gui_custom_c…

Elasticsearch 集群状态详解

cluster state 返回结果详解 GET /_cluster/statehttps://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html详细信息如下&#xff1a; {"cluster_name": "business-log","cluster_uuid": "ArYy-qmCTbCQTDUI8o…

ClickHouse Keeper: Coordination without the drawbacks没有缺点的分布式协作系统

ClickHouse Keeper 介绍 现代分布式系统需要一个共享和可靠的信息存储库和共识系统来协调和同步分布式操作。对于ClickHouse来说&#xff0c;ZooKeeper最初是被选中的。它的广泛使用是可靠的&#xff0c;提供了简单而强大的API&#xff0c;并提供了合理的性能。 然而&#xf…

[工业自动化-8]:西门子S7-15xxx编程 - PLC主站 - CPU模块

目录 前言&#xff1a; 一、概述 二、CPU操作和显示 三、安装 四、CPU的选择 前言&#xff1a; 一、概述 西门子S7-1500系列是一系列高性能工业自动化控制器&#xff0c;广泛应用于制造业、自动化生产、物流等领域。这个系列的控制器是设计用来满足高性能、高效能要求的复…

板刷codeforces 1000分

练习 1.Problem - 1A - Codeforces AC代码: #include <bits/stdc.h> #define endl \n #define int long long using namespace std; int n,m,a; void solve() {cin>>n>>m>>a;cout<<(n/a(n%a!0))*(m/a(m%a!0))<<endl; } signed main() {…

《童年》 思维导图

《童年》是高尔基自传体小说三部曲中的第一部&#xff0c;讲述的是高尔基幼年丧父、母亲改嫁&#xff0c;他跟随日渐破落的小染坊主外公以及外婆生活的童年经历。小说通过一个儿童天真无邪的眼光&#xff0c;向读者生动地展示了19世纪中叶俄罗斯社会底层人民的生活状态&#xf…

Apache APISIX 的 Admin API 默认访问令牌漏洞(CVE-2020-13945)漏洞复现

漏洞描述 Apache APISIX 是一个动态、实时、高性能的 API 网关。Apache APISIX 有一个默认的内置 API 令牌&#xff0c;可用于访问所有 admin API&#xff0c;通过 2.x 版本中添加的参数导致远程执行 LUA 代码。 漏洞环境及利用 启动docker环境 访问9080端口 通过 admin api…

Centos7安装配置中文输入法

Centos7安装配置中文输入法 在安装CentOS时&#xff0c;我们为了方便使用&#xff0c;语言选择了中文&#xff0c;但是我们发现&#xff0c;在Linux命令行或者是浏览器中输入时&#xff0c;我们只能输入英文&#xff0c;无法输入汉字。 来&#xff0c;跟随脚步&#xff0c;设…

【java】【MyBatisPlus】【四】【完】MyBatisPlus一些实战总结(枚举、翻页、sql、组合条件、自增主键、逻辑删除)

目录 一、枚举 1、数据库type字段是Integer 类型枚举 2、创建一个该字段的枚举类 TypeEnum 3、修改实体类 4、配置文件新增mybatis-plus的配置 5、检验&#xff1a; 5.1 查询显示 5.3 库里验证 二、自增主键不是id字段处理 三、逻辑删除字段不是delete字段处理 1、实…

【Linux网络】2分钟学习centos7永久修改网卡名称

目录 第一步&#xff0c;先查看网卡名称 第二步&#xff1a;先修改配置文件/etc/default/grub&#xff0c;添加net.ifnemes0 第三步&#xff1a;重新加载内核配置grub2-mkconfig -o /boot/grub2/grub.cfg 第四步&#xff1a;重启电脑 第五步&#xff1a;查看网卡名称&…

No module named ‘importlib.metadata‘

解决办法 参考博客 https://wenku.csdn.net/answer/45a1563cc02e9592dd1d1d28fe7b88e7 pip install importlib_metadata

基于工业智能网关的汽车充电桩安全监测方案

近年来&#xff0c;我国新能源汽车产业得到快速发展&#xff0c;电动车产量和销量都在持续增长&#xff0c;不仅国内市场竞争激烈&#xff0c;而且也远销海外&#xff0c;成为新的经济增长点。但与此同时&#xff0c;充电设施的运营却面临着安全和效率的双重挑战。 当前的充电桩…

python特殊循环队列_队中元素个数代替队尾指针

对于循环队列来说&#xff0c;如果知道队头指针和队中元素个数&#xff0c;则可以计算出队尾指针。也就是说&#xff0c;可以用队中元素个数代替队尾指针。设计出这种循环队列的判队空、进队、出队和取队头元素的算法。 本例的循环队列包含data 数组、队头指针 front和队中元素…

猫头虎博主第7期赠书活动:《计算机考研精炼1000题》

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

mac M2 pytorch_geometric安装

我目前的环境是mac M2&#xff0c;我在base环境中安装了pytorch_geometric,仅仅做测试用的&#xff0c;不做真正跑代码的测试 首先我的base环境的设置如下&#xff1a; pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.…

Android Camera App启动流程解析

前言&#xff1a;做了7年的camera app开发&#xff0c;给自己一个总结&#xff0c;算是对camera的一次告白吧。Camera被大家誉为手机的眼睛&#xff0c;是现在各大手机厂商的卖点&#xff0c;也是各大厂商重点发力的地方。Camera的重要性我就不在这里赘述了&#xff0c;让我们进…

计网自顶向下(Web服务器+UDPping+邮件客户端)

目录 &#x1f416;前言 &#x1f33c;Web服务器(作业1) &#x1f333;过程 &#x1f333;解释 &#x1f525;代码 &#x1f33c;UDPping程序(作业2) &#x1f333;过程 &#x1f333;解释 Client Server 整体逻辑 &#x1f525;代码 &#x1f33c;邮件客户端(作业…

粤嵌实训医疗项目(小组开发)--day05

目录 一、医生功能模块 ------------前端实现------------ ------------后端接口------------ 功能一&#xff1a;分页查询医生基础信息&#xff08;介绍MybatisPlus如何使用分页&#xff09; 功能二&#xff1a;根据搜索栏名称查找对应医生&#xff08;讲解自定义查询集&…

SRRC认证的必要性:保障电子产品质量安全的重要措施

随着电子产品的普及和应用&#xff0c;对电子产品的质量安全要求也越来越高。为了保障消费者的权益和安全&#xff0c;国家对电子产品进行了严格的监管和管理。其中&#xff0c;SRRC认证是保障电子产品质量安全的重要措施之一。 SRRC认证是指在我国境内生产、销售、使用的无线电…

(动手学习深度学习)第13章 计算机视觉---图像增广与微调

13.1 图像增广 总结 数据增广通过变形数据来获取多样性从而使得模型泛化性能更好常见图片增广包裹翻转、切割、变色。 图像增广代码实现