Echarts地图实现:各省市计划录取人数

Echarts地图实现:各省市计划录取人数

实现功能

本文将介绍如何使用 ECharts 制作一个展示中国人民大学2017年各省市计划录取人数的地图。我们将实现以下图表形式:

  • 地图:基础的地图展示,反映不同省市的录取人数。
  • 散点图:在地图上以散点的形式展示每个省市的录取人数。
  • 热力图:(如果数据和需求适合,可以添加热力图的实现)

效果预览

在这里插入图片描述

实现思路

  1. 准备地图数据和录取人数数据。
  2. 使用 ECharts 初始化地图,并加载地理坐标数据。
  3. 配置散点图和地图系列,将数据与地图结合。
  4. 通过视觉映射(visualMap)展示不同录取人数的级别。
  5. 添加交互功能,如工具箱(toolbox)和提示信息(tooltip)。

关键代码

HTML结构

<div id="ECharts" class="EChartBox"></div>

JavaScript代码

<div id="ECharts" class="EChartBox"></div>
<script src="./jquery.min.js"></script>
<script src="./echarts.min.5.2.js"></script>
<script type="application/javascript">window.onload = function () {// 初始化 ECharts 图表$.getJSON('./Geochina.json', function (res) {echarts.registerMap('china', res)var myChart = echarts.init(document.getElementById('ECharts'));var name_title = "中国人民大学2017年各省市计划录取人数"var subname = '数据爬取自千栀网\n,\n上海、浙江无文理科录取人数'var nameColor = " rgb(55, 75, 113)"var name_fontFamily = '等线'var subname_fontSize = 15var name_fontSize = 18var mapName = 'china'var data = [{name: "北京", value: 177},{name: "天津", value: 42},{name: "河北", value: 102},{name: "山西", value: 81},{name: "内蒙古", value: 47},{name: "辽宁", value: 67},{name: "吉林", value: 82},{name: "黑龙江", value: 66},{name: "上海", value: 24},{name: "江苏", value: 92},{name: "浙江", value: 114},{name: "安徽", value: 109},{name: "福建", value: 116},{name: "江西", value: 91},{name: "山东", value: 119},{name: "河南", value: 137},{name: "湖北", value: 116},{name: "湖南", value: 114},{name: "重庆", value: 91},{name: "四川", value: 125},{name: "贵州", value: 62},{name: "云南", value: 83},{name: "西藏", value: 9},{name: "陕西", value: 80},{name: "甘肃", value: 56},{name: "青海", value: 10},{name: "宁夏", value: 18},{name: "新疆", value: 67},{name: "广东", value: 123},{name: "广西", value: 59},{name: "海南", value: 14},];var geoCoordMap = {};var toolTipData = [{name: "北京", value: [{name: "文科", value: 95}, {name: "理科", value: 82}]},{name: "天津", value: [{name: "文科", value: 22}, {name: "理科", value: 20}]},{name: "河北", value: [{name: "文科", value: 60}, {name: "理科", value: 42}]},{name: "山西", value: [{name: "文科", value: 40}, {name: "理科", value: 41}]},{name: "内蒙古", value: [{name: "文科", value: 23}, {name: "理科", value: 24}]},{name: "辽宁", value: [{name: "文科", value: 39}, {name: "理科", value: 28}]},{name: "吉林", value: [{name: "文科", value: 41}, {name: "理科", value: 41}]},{name: "黑龙江", value: [{name: "文科", value: 35}, {name: "理科", value: 31}]},{name: "上海", value: [{name: "文科", value: 12}, {name: "理科", value: 12}]},{name: "江苏", value: [{name: "文科", value: 47}, {name: "理科", value: 45}]},{name: "浙江", value: [{name: "文科", value: 57}, {name: "理科", value: 57}]},{name: "安徽", value: [{name: "文科", value: 57}, {name: "理科", value: 52}]},{name: "福建", value: [{name: "文科", value: 59}, {name: "理科", value: 57}]},{name: "江西", value: [{name: "文科", value: 49}, {name: "理科", value: 42}]},{name: "山东", value: [{name: "文科", value: 67}, {name: "理科", value: 52}]},{name: "河南", value: [{name: "文科", value: 69}, {name: "理科", value: 68}]},{name: "湖北", value: [{name: "文科", value: 60}, {name: "理科", value: 56}]},{name: "湖南", value: [{name: "文科", value: 62}, {name: "理科", value: 52}]},{name: "重庆", value: [{name: "文科", value: 47}, {name: "理科", value: 44}]},{name: "四川", value: [{name: "文科", value: 65}, {name: "理科", value: 60}]},{name: "贵州", value: [{name: "文科", value: 32}, {name: "理科", value: 30}]},{name: "云南", value: [{name: "文科", value: 42}, {name: "理科", value: 41}]},{name: "西藏", value: [{name: "文科", value: 5}, {name: "理科", value: 4}]},{name: "陕西", value: [{name: "文科", value: 38}, {name: "理科", value: 42}]},{name: "甘肃", value: [{name: "文科", value: 28}, {name: "理科", value: 28}]},{name: "青海", value: [{name: "文科", value: 5}, {name: "理科", value: 5}]},{name: "宁夏", value: [{name: "文科", value: 10}, {name: "理科", value: 8}]},{name: "新疆", value: [{name: "文科", value: 36}, {name: "理科", value: 31}]},{name: "广东", value: [{name: "文科", value: 63}, {name: "理科", value: 60}]},{name: "广西", value: [{name: "文科", value: 29}, {name: "理科", value: 30}]},{name: "海南", value: [{name: "文科", value: 8}, {name: "理科", value: 6}]},];/*获取地图数据*/myChart.showLoading();var mapFeatures = echarts.getMap(mapName).geoJson.features;myChart.hideLoading();mapFeatures.forEach(function (v) {// 地区名称var name = v.properties.name;// 地区经纬度geoCoordMap[name] = v.properties.cp;});// console.log("============geoCoordMap===================")// console.log(geoCoordMap)// console.log("================data======================")console.log(data)console.log(toolTipData)var max = 480,min = 9; // todovar maxSize4Pin = 100,minSize4Pin = 20;var convertData = function (data) {var res = [];for (var i = 0; i < data.length; i++) {var geoCoord = geoCoordMap[data[i].name];if (geoCoord) {res.push({name: data[i].name,value: geoCoord.concat(data[i].value),});}}return res;};option = {title: {text: name_title,subtext: subname,x: 'center',textStyle: {color: nameColor,fontFamily: name_fontFamily,fontSize: name_fontSize},subtextStyle: {fontSize: subname_fontSize,fontFamily: name_fontFamily}},tooltip: {trigger: 'item',formatter: function (params) {if (typeof (params.value)[2] == "undefined") {var toolTiphtml = ''for (var i = 0; i < toolTipData.length; i++) {if (params.name == toolTipData[i].name) {toolTiphtml += toolTipData[i].name + ':<br>'for (var j = 0; j < toolTipData[i].value.length; j++) {toolTiphtml += toolTipData[i].value[j].name + ':' + toolTipData[i].value[j].value + "<br>"}}}console.log(toolTiphtml)// console.log(convertData(data))return toolTiphtml;} else {var toolTiphtml = ''for (var i = 0; i < toolTipData.length; i++) {if (params.name == toolTipData[i].name) {toolTiphtml += toolTipData[i].name + ':<br>'for (var j = 0; j < toolTipData[i].value.length; j++) {toolTiphtml += toolTipData[i].value[j].name + ':' + toolTipData[i].value[j].value + "<br>"}}}console.log(toolTiphtml)// console.log(convertData(data))return toolTiphtml;}}},// legend: {//     orient: 'vertical',//     y: 'bottom',//     x: 'right',//     data: ['credit_pm2.5'],//     textStyle: {//         color: '#fff'//     }// },visualMap: {show: true,min: 0,max: 200,left: 'left',top: 'bottom',text: ['高', '低'], // 文本,默认为数值文本calculable: true,seriesIndex: [1],inRange: {// color: ['#3B5077', '#031525'] // 蓝黑// color: ['#ffc0cb', '#800080'] // 红紫// color: ['#3C3B3F', '#605C3C'] // 黑绿// color: ['#0f0c29', '#302b63', '#24243e'] // 黑紫黑// color: ['#23074d', '#cc5333'] // 紫红color: ['#00467F', '#A5CC82'] // 蓝绿// color: ['#1488CC', '#2B32B2'] // 浅蓝// color: ['#00467F', '#A5CC82'] // 蓝绿// color: ['#00467F', '#A5CC82'] // 蓝绿// color: ['#00467F', '#A5CC82'] // 蓝绿// color: ['#00467F', '#A5CC82'] // 蓝绿}},/*工具按钮组*/// toolbox: {//     show: true,//     orient: 'vertical',//     left: 'right',//     top: 'center',//     feature: {//         dataView: {//             readOnly: false//         },//         restore: {},//         saveAsImage: {}//     }// },geo: {show: true,map: mapName,label: {normal: {show: false},emphasis: {show: false,}},roam: true,itemStyle: {normal: {areaColor: '#031525',borderColor: '#3B5077',},emphasis: {areaColor: '#2B91B7',}}},series: [{name: '散点',type: 'scatter',coordinateSystem: 'geo',data: convertData(data),symbolSize: function (val) {return val[2] / 10;},label: {normal: {formatter: '{b}',position: 'right',show: true},emphasis: {show: true}},itemStyle: {normal: {color: '#05C3F9'}}},{type: 'map',map: mapName,geoIndex: 0,aspectScale: 0.75, //长宽比showLegendSymbol: false, // 存在legend时显示label: {normal: {show: true},emphasis: {show: false,textStyle: {color: '#fff'}}},roam: true,itemStyle: {normal: {areaColor: '#031525',borderColor: '#3B5077',},emphasis: {areaColor: '#2B91B7'}},animation: false,data: data},{name: '点',type: 'scatter',coordinateSystem: 'geo',symbol: 'pin', //气泡symbolSize: function (val) {var a = (maxSize4Pin - minSize4Pin) / (max - min);var b = minSize4Pin - a * min;b = maxSize4Pin - a * max;return a * val[2] + b;},label: {normal: {show: true,textStyle: {color: '#fff',fontSize: 9,}}},itemStyle: {normal: {color: '#F62157', //标志颜色}},zlevel: 6,data: convertData(data),},{name: 'Top 5',type: 'effectScatter',coordinateSystem: 'geo',data: convertData(data.sort(function (a, b) {return b.value - a.value;}).slice(0, 5)),symbolSize: function (val) {return val[2] / 10;},showEffectOn: 'render',rippleEffect: {brushType: 'stroke'},hoverAnimation: true,label: {normal: {formatter: '{b}',position: 'right',show: true}},itemStyle: {normal: {color: 'yellow',shadowBlur: 10,shadowColor: 'yellow'}},zlevel: 1},]};myChart.setOption(option);})}
</script>

注意事项

  • 确保地图数据的准确性。
  • 根据实际数据调整视觉映射的 minmax 值。
  • 考虑不同屏幕下的适配问题。

完整代码和json文件

点我下载完整代码和json文件

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 7.x 系列【10】数据类型之有序集合(ZSet)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 ZADD2.2 ZCARD2.3 ZSCORE2.4 ZRANGE2.5 ZREVRANGE2.6 ZRANK2.7…

企业源代码加密软件丨透明加密技术是什么

在一个繁忙的软件开发公司中&#xff0c;两位员工小李和小张正在讨论源代码安全的问题。 “小张&#xff0c;你有没有想过我们的源代码如果被泄露了怎么办&#xff1f;”小李担忧地问。 “是啊&#xff0c;这是个大问题。源代码是我们的核心竞争力&#xff0c;一旦泄露&#…

STM32学习之一:什么是STM32

目录 1.什么是STM32 2.STM32命名规则 3.STM32外设资源 4. STM32的系统架构 5. 从0到1搭建一个STM32工程 学习stm32已经很久了&#xff0c;因为种种原因&#xff0c;也有很久一段时间没接触过stm32了。等我捡起来的时候&#xff0c;发现很多都已经忘记了&#xff0c;重新捡…

数据分析报告制作的结构和思路整理

先画重点&#xff1a;一份分析报告的制作&#xff0c;目前的市场的分析步骤是优先找一些别人的研究报告&#xff0c;现成的东西&#xff0c;重点是要好好总结业务逻辑和潜在运营可能&#xff0c;这也是一位优秀数据分析师的价值体现。 举个例子&#xff0c;以目前小说短剧赛道的…

SQL33 找出每个学校GPA最低的同学 解法详解

题目截图&#xff1a; 建表代码&#xff1a; drop table if exists user_profile; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar(14) NOT NULL, age int , university varchar(32) NOT NULL, gpa float, active_days_within_30 int…

虚拟服务器ESXI上Win11虚拟机安装EnspPro(Window系统安装EnspPro方法)

华为于2023年6月30日发布EnspPro&#xff0c;因其对部署环境使用较高&#xff08;常见8核16GB电脑支持模拟3~6个设备&#xff0c;如果要模拟多台设备大规模组网&#xff0c;则建议使用高性能服务器部署安装&#xff09;&#xff0c;本次将其部署再虚拟服务器中。 环境&#xf…

MySQL高级-MVCC-基本概念(当前读、快照读)

文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control&#xff0c;多版本并发控制。指维护一个数据的多个版本&#xff0c;使得读写操作没有冲突&#xff0c;快照读为MySQL实现MVCC提供了一个…

【motan rpc 懒加载】异常

文章目录 升级版本解决问题我使用的有问题的版本配置懒加载错误的版本配置了懒加载 但是不生效 lazyInit"true" 启动不是懒加载 会报错一次官方回复 升级版本解决问题 <version.motan>1.2.1</version.motan><dependency><groupId>com.weibo…

mysql中in参数过多优化

优化方式概述 未优化前 SELECT * FROM rb_product rb where sku in(1022044,1009786)方案2示例 public static void main(String[] args) {//往list里面设置3000个值List<String> list new ArrayList<>();for (int i 0; i < 3000; i) {list.add(""…

人生最有力,最棒的十句话!

人生最有力&#xff0c;最棒的十句话 1、允许一切事发生&#xff0c;所有一切发生的事不是你能阻挡了的&#xff0c;你接受&#xff0c;他也发生&#xff0c;你不接受&#xff0c;他也发生&#xff0c;你还不如坦然面对接受现实。 2、你焦虑的时候千万不要躺着啥也不干&#xf…

【多维动态规划】Leetcode 97. 交错字符串【中等】

交错字符串 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 子字符串 是字符串中连续的 非空 字符序列。 s s1 s2 … snt…

什么是产线工控安全,如何保障产线设备的安全

什么是产线工控安全&#xff1f; 工控&#xff0c;指的是工业自动化控制&#xff0c;主要利用电子电气、机械、软件组合实现。即是工业控制系统&#xff0c;或者是工厂自动化控制。产线工控安全指的是工业控制系统的数据、网络和系统安全。随着工业信息化的迅猛发展&#xff0…

开源项目-商城管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-商城管理系统 商城管理系统分前后端两部分。前端主要有商品展示,我的订单,个人中心等内容;后端的主要功能包括产品管理,门店管理,会员管理,订单管理等模块 移动端页面

J018_冒泡排序

一、排序过程 如果要对一个数组进行升序排序&#xff1a; 每个轮次两两数字进行比较&#xff0c;如果前面的数字大于后面的数字&#xff0c;则交换两个数字的位置&#xff1b;如果前面的数字小于或等于后面的数字&#xff0c;则这两个数字位置不变。直到把数组中所有数字比较…

核方法总结(四)——高斯过程回归学习笔记

一、定义 基于核方法的线性回归模型和传统线性回归一样&#xff0c;可以用未知数据进行预测&#xff0c;但不能确定 预测的可信度。在参考书第二章中可知&#xff0c;基于贝叶斯方法可以实现对未知数据依概率预测&#xff0c;进而可得到预测的可信度。这一方法中&#xff0c;通…

深度解析:机器学习如何助力GPT-5实现语言理解的飞跃

文章目录 文章前言机器学习在GPT-5中的具体应用模型训练与优化机器翻译与跨语言交流&#xff1a;情感分析与问答系统&#xff1a;集成机器学习功能&#xff1a;文本生成语言理解任务适应 机器学习对GPT-5性能的影响存在的挑战及解决方案技术细节与示例 文章前言 GPT-5是OpenAI公…

Kotlin中对空的很多处理

代码图片直观效果 逐行解释Kotlin中对空的各种情况的使用 private fun testNull() {val flag 1var name: String? nullvar user: User? // 有警告, 因为下面的赋值可以和这一行定义合并var zhangUser: User? User()var wangUser: User User() // 提示Explicitly given t…

【Linux】使用ntp同步时间

ntp介绍 NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;是一种用于同步计算机时间的协议&#xff0c;工作在UDP的123端口上。它是一种客户端-服务器协议&#xff0c;用于同步计算机的时钟。通过连接到网络上的时间服务器&#xff0c;计算机可以获…

在开发板上抓包的方法

1.tcpdump tcpdump -i lo -s0 -w /user/lo.pcap tcpdump: 启动 tcpdump 工具&#xff0c;用于捕获网络数据包。-i lo: 指定监听的网络接口为 lo&#xff0c;这里的 lo 是本地回环接口&#xff08;loopback interface&#xff09;&#xff0c;用于本机内部通信。-s0: 设置抓取…

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中&#xff0c;有没有遇到用户重复提交的场景&#xff0c;即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价&#xff0c;本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交&#xff0c;并通过我们的自定义注解来进行封装功能。 首先&a…