Python、MATLAB和PPT完成数学建模竞赛中的地图绘制

参加数学建模比赛时,很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景,往往要求我们制作与地图相关的可视化内容。如下图,这是21年亚太赛的那道塞罕坝的题目,期间涉及到温度、降水和森林覆盖率等问题:

实际上,有很多方法可以完成论文写作中对可视化图片的需求,如Python、MATLAB、Arcgis、echarts、一些BI平台、Excel甚至PPT。本帖介绍几种博主在本科期间参赛用到的方法~

一.pyecharts包绘制地图

首先我们需要安装一个pyecharts包:

pip install pyecharts

如下,可以简单地绘制一张中国地图的可视化效果:

from  pyecharts.charts import Map
map=Map()   #创建地图对象
data=[("北京省",11),("山西省",14),("黑龙江省",23),("浙江省",33),("湖南省",43)
]  #数据格式:列表中以元组构成map.add("原始形态",data,"china")#实际上默认值就是china
map.render()

生成的文件默认叫render.html,就在原路径:

 

一个小注意点是:现在必须写成“山西省”的格式,写成山西是不显示数据的!换句话说,key值必须和地图中的名字对应~ 

设置全局选项后可以展示颜色:

from  pyecharts.charts import Map
from  pyecharts.options import VisualMapOpts
map=Map()   #创建地图对象
data=[("北京省",11),("山西省",14),("黑龙江省",23),("浙江省",33),("湖南省",43)
]  #数据格式:列表中以元组构成
map.set_global_opts(visualmap_opts=VisualMapOpts(is_show=True)
)
map.add("原始形态",data,"china")#实际上默认值就是china
map.render()

一方面不太好看,另一方面热力条可能会有问题,需要手动调整一下:

map.set_global_opts(visualmap_opts=VisualMapOpts(is_show=Trueis_piecewise=True,#允许手动~pieces=[{"min":11,"max":20,"label":"11-20","color":"#0000ff"},{"min":21,"max":30,"label":"11-20","color":"#00ff00"},{"min":31,"max":40,"label":"11-20","color":"#ff0000"},{"min":41,"max":50,"label":"11-20","color":"#00ccff"}])
)

除了全国的大地图,还可以绘制省级、市级的地图:

from  pyecharts.charts import Map
from  pyecharts.options import VisualMapOpts
map=Map()   #创建地图对象
data=[("太原市",100),("大同市",100)
]  #数据格式:列表中以元组构成map.add("原始形态",data,"山西")
map.render()

from  pyecharts.charts import Map
from  pyecharts.options import VisualMapOpts
map=Map()   #创建地图对象
data=[("迎泽区",100)
]  #数据格式:列表中以元组构成map.add("原始形态",data,"太原")
map.render()

        而针对外国地图,需要下载额外的扩展包,这里就不演示了。此外由于众所周知的原因,说真的网页中的图片绘制的地图在字符的配置上显得不那么美观。因此这种绘图方式仁者见仁智者见智,针对于JSON数据繁多的情况下可以考虑使用~

二.PPT法绘制国内地图

相比之下,博主还是喜欢用“笨办法”来完成地图可视化,毕竟数模比赛的核心并非是可视化技术多么高超,在其他情况一样的情况下——变得好看些才是王道~

访问网站:DataV.GeoAtlas地理小工具系列

进入阿里云地图可视化平台

可以通过手动的方式,亦可以通过右侧的粒度选择器来选中:此处我们选择粒度为市级别的山西省:

        当然可以下载JSON格式的数据,然后使用python或者MATLAB等方法——此处博主选择svg格式。SVG 是一种基于 XML(可扩展标记语言)的矢量图形格式。它用于描述二维图形,通过使用 XML 标签和属性来定义图形的形状、颜色、位置、大小等各种属性。与位图不同,矢量图形是由数学公式定义的图形元素组成,所以 SVG 图形在放大或缩小后不会出现失真的情况,能够始终保持清晰的图像质量。下载后,通常情况下是可以通过默认浏览器打开的~

当然了,这玩意可以直接拖入到PPT中:

右键点击取消组合,然后放大:

 然后就可以对单独的一块操作啦~

 市级单位亦可下载,如下是粒度为区级的太原市——实际上不能再降低了~

这种方式就需要各位手动进行颜色填充了,如果颜色区间相对较少,还是个不错的选择哦~ 

三.PPT法绘制国外地图

使用国外的地图需要另外一个网站:

Free SVG Maps - amCharts

同样下载后也是svg的格式,同样的方式各位手动填充即可。不过该网站貌似只可以做到省级或者说是州级的单位~

四.Matlab的geoplot和geobubble函数

geoplot,顾名思义——就是绘制一张地理图呗~不过和之前的这几种图不一样:之前几种都是以国家、省份、城市亦或区县级别的单位,来展示某种数值上的差异。而geoplot则更多用来展示某种地理元素的分布情况,比如某条路径~

geoplot(10,112)

两个参数分别是纬度和经度,然后会生成以该数值为中心的地图:

出于美观考虑可以添加底图

geobasemap streets

其实还有很多别的参数,但是其他的需要联网(也就是必须用正版的)~ 

 这里我们可以绘制一下从太原去北京再去上海、苏州的路线(经纬度可以自行查阅~)

lat=[37.87016999999997,39.788078,31.141900000000028,31.29094800000002];
lon=[112.562367,116.32634499999995,121.80916400000001,120.65650900000003];
%分别为4个城市的纬度和经度geoplot(lat,lon,"B-o","LineWidth",2)
geobasemap streets

而geobubble,亦可顾名思义——地理泡泡?实际上就是以地图为底的气泡图。举个例子,我们此时要显示上述4个城市的常住人口数,只需要再添加额外的权重参数也即人数即可:

lat=[37.87016999999997,39.788078,31.141900000000028,31.29094800000002];
lon=[112.562367,116.32634499999995,121.80916400000001,120.65650900000003];
%分别为4个城市的纬度和经度
weights=[545.44,2185.8,2487.45,1295.8];
lat1=37.8;
lon1=112.56;
value=11000000;
gb=geobubble(lat,lon,weights)
gb.BubbleColorList = summer(1);%选择颜色
geolimits([28 43],[110 125])%限制一下经纬度
geobasemap streets


如上就是本文全部内容,各位可以根据所选题目的实际情况灵活调整战术~ 

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

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

相关文章

Python(冒泡排序、选择排序、插入法排序、快速排序,算法稳定性)

算法的稳定性 冒泡排序 # 冒泡排序 # 1 思想: 相邻位置两个元素比较, 前面的元素比后面的元素大则交换, 把最大的数给找到 # 经过一轮一轮的比较最终把序列给排序 # 2 关键点1: 两层for循环 外层循环控制多少轮 内层for循环控制比较次数 # 3 关键点2: 若遍历一遍没有数字…

【自用】NLP算法面经(5)

一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时,它已经很好地学习了训练数据,甚至是训练数据中的噪声,所以可能无法在新的、未见过的数据上表现良好。 比如: 其中,x1和…

PyCharm安装redis,python安装redis,PyCharm使用失败问题

报错信息 Usage: D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] -r [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip instal…

学习笔记|arduino uno r3|DS1307时钟芯片|Atmega328P| 设置时间|读取时间|无源晶振:DS1307时钟芯片实验

目录 芯片pinout: 实验器件: 实验连线 解决AVR 架构不支持 printf() 方法 使用GetTimeAndDate.ino设置时间: 使用SetTimeAndDate.ino设置时间: 芯片pinout: DS1307 是美国 DALLAS 公司推出的 I 总线接口实时时钟芯…

uniapp可拖拽消息数徽标draggable-badge,仿手机qq聊天列表未读数徽标动效

组件下载地址:https://ext.dcloud.net.cn/plugin?id22679 兼容性: 测试了h5和微信小程序,理论支持全平台,暂不支持pc端,不过可以自己修改事件兼容pc 使用uniapp仿写了一个手机qq聊天列表右侧未读数的徽标组件&#x…

【设计模式】策略模式

以下是格式优化后的Markdown文档,仅调整代码缩进,保持内容不变: 四、策略模式 策略(Strategy) 模式是一种行为型模式,其实现过程与模板方法模式非常类似——都 是以扩展的方式支持未来的变化。本章通过对一个具体范例的逐步重构…

STM32配套程序接线图

1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…

【C语言】使用结构体实现位段

一、位段 前面我们学习了结构体,位段的声明和结构体是一样的,其区别如下: 1、位段的成员必须是int 、unsigned int 、signed int 、在C99中位段的成员的类型也可以选择其他类型。 2、位段的成员名后边有一个冒号和一个数字 如下&#xff…

【大模型系列篇】硅基智能开源数字人模型HeyGem.ai,开启数字人时刻

硅基智能开源数字人模型HeyGem.ai, 1秒克隆生成4K视频, 支持离线多语言, 开源72小时狂揽1.3k星, 目前已经获得3.4k星。 硅基智能正式宣布在GitHub开源全球TOP级数字人模型,同时发布基于该模型的同名数字人工具硅基数字人克隆的本地安装包,这一举措标志着…

【C++】STL库面试常问点

STL库 什么是STL库 C标准模板库(Standard Template Libiary)基于泛型编程(模板),实现常见的数据结构和算法,提升代码的复用性和效率。 STL库有哪些组件 STL库由以下组件构成: ● 容器&#xf…

knowledge-微前端(多个前端应用聚合的一个应用架构体系,每个小的应用可独立运行,独立开发,独立部署上线)

1.前言 微前端,将一个大的前端应用拆分为多个小型的,独立开发的前端应用,每一个小型的应用都可以单独的开发,部署和运行。这种结构允许不同的团队使用不同的技术栈来开发应用的不同部分,提高开发的效率与灵活性。 2.实…

三格电子PLC数据采集网关-工业互联的智能枢纽

在工业自动化领域,设备间的数据互通与协议兼容是核心挑战之一。三格电子推出的PLC据采集网关SG-PLC-Private,凭借其多协议兼容、高稳定性和灵活配置能力,成为工业物联网(IIoT)中实现设备互联的关键设备。本文将从产品功…

鸿蒙NEXT项目实战-百得知识库05

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

leetcode热题100道——字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", &…

【Vue3】01-vue3的基础 + ref reactive

首先确保已经有了ES6的基础 本文介绍 vue 的基础使用以及 两种响应数据的方式。 目录 1. 创建一个vue应用程序 2. Vue模块化开发 3. ref 和 reactive 的区别 1. 创建一个vue应用程序 所需的两个文件: https://unpkg.com/vue3/dist/vue.global.js https://un…

Linux中的selinux,磁盘管理

一、selinux 作用:通过对软件进程限制某些权限,从而保证系统的安全。通过上下文类型和设定好的上下文类型是否一致。如果一致,那么软件就可以完成后续的操作,例如访问文件中数据,或者让数据通过某个端口。做好个人防护…

Linux应用:Linux的信号

什么是信号 信号是一种软件中断,用于通知进程系统中发生了某种特定事件。它是操作系统与进程之间,以及进程与进程之间进行异步通信的一种方式。在 Linux 系统中,信号是一种比较简单的进程间通信机制。当一个信号产生时,内核会通过…

Linux笔记之Ubuntu22.04安装IBus中文输入法教程

Linux笔记之Ubuntu22.04安装IBus中文输入法教程 code review! 文章目录 Linux笔记之Ubuntu22.04安装IBus中文输入法教程安装 IBus 并配置中文输入法步骤 1: 安装 IBus 和拼音插件步骤 2: 设置 IBus 为默认输入法框架步骤 3: 重启会话步骤 4: 添加中文输入法步骤 5: …

【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

目录 1.MiniMax海螺AI视频简介 2.使用教程 1.MiniMax海螺AI视频简介 海螺视频,作为 MiniMax 旗下海螺 AI 平台精心打造的 AI 视频生成工具,致力于助力用户产出高品质视频内容。该工具依托 abab-video-1 模型,具备强大的文生视频功能。用户…

Kubeasz工具快速部署K8Sv1.27版本集群(二进制方式)

文章目录 一、基本信息二、服务器初始化操作三、使用Kubeasz部署K8S集群四、验证集群 一、基本信息 1、部署需要满足前提条件: 注意1:确保各节点时区设置一致、时间同步;注意2:确保在干净的系统上开始安装;注意3&…