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

news2025/3/27 9:37:11

参加数学建模比赛时,很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景,往往要求我们制作与地图相关的可视化内容。如下图,这是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=True
        is_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.coloradmin.cn/o/2318989.html

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

相关文章

跨平台RTSP高性能实时播放器实现思路

跨平台RTSP高性能实时播放器实现思路 目标:局域网100ms以内超低延迟 一、引言 现有播放器(如VLC)在RTSP实时播放场景中面临高延迟(通常数秒)和资源占用大的问题。本文提出一种跨平台解决方案,通过网络层…

编写一个简单的chrome截图扩展

文件结构: screenshot |-- background.js ---> service_worker运行的js |-- images ---> 图片 | |-- logo-128x128.png | |-- logo-16x16.png | |-- logo-32x32.png | -- logo-48x48.png -- manifest.json --->…

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降(Gradient Descent)是一种常用的优化算法,广泛应用于机器学习、深度学习等领域,在这里是用于求J(w,b)局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是,一个人…

【机器学习chp14 — 3】生成式模型—生成对抗网络GAN(超详细分析,易于理解,推导严谨,一文就够了)

目录 三、生成对抗网络 ( Generative Adversarial Networks,GAN ) 1、GAN的基本思想 (1)生成器与判别器的基本结构与演变 (2)“对抗”机制及名词由来 2、GAN训练的基本算法 (1)网络初始化与…

机器人打磨控制技术

工具姿态调整运动 法线方向对齐运动:机器人实时调整工具姿态,使打磨工具的轴线与工件曲面的法线方向一致。例如,在球面打磨时,工具需始终垂直于球面切线。角度补偿运动:针对倾斜或不规则曲面,通过调整机器人…

K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群

配置altermanager发送告警到钉钉群 ​ 创建钉钉群,设置机器人助手(必须是管理员才能设置),获取webhook webhook: https://oapi.dingtalk.com/robot/send?access_token25bed933a52d69f192347b5be4b2193bc0b257a6d9ae68d81619e3ae3d93f7c6…

Spring Boot + Spring Integration整合MQTT打造双向通信客户端

1. 概述 本文分两个章节讲解MQTT相关的知识,第一部份主要讲解MQTT的原理和相关配置,第二个章节主要讲和Spring boot的integration相结合代码的具体实现,如果想快速实现功能,可直接跳过第一章节查看第二章讲。 1.1 MQTT搭建 为了…

Java 填充 PDF 模版

制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop,安装过程很简单,一路下一步即可。用 OnlyOffice 制作 PDF 模版(表单) 使用 OnlyOffice 表单设计器,制作表单,如下图 注意命名…

Vulnhub-dedecms织梦通关攻略

姿势一、通过文件管理器上传WebShell 第一步:进入后台,找到文件管理器上传木马文件 第二步:使用蚁剑进行连接 #文件地址 http://localhost/dedecms/shell.php 姿势二、修改模板⽂件拿WebShell 第一步:修改模板文件,删除…

数据集获取

sklearn数据集 sklearn有四部分数据。其中sklearn的数据集有两部分真实的数据,一部分嵌入到了sklearn库中,即安装好sklearn后就自带了一部分数据,这些数据的规模比较小称为small toy datasets ,还有一部分数据是需要在网上下载的,sklearn提供了下载的api接口,这些数据规…

实验12深度学习

实验12深度学习 一、实验目的 (1)理解并熟悉深度神经网络的工作原理; (2)熟悉常用的深度神经网络模型及其应用环境; (3)掌握Anaconda的安装和设置方法,进一步熟悉Jupyte…

2024年消费者权益数据分析

📅 2024年315消费者权益数据分析 数据见:https://mp.weixin.qq.com/s/eV5GoionxhGpw7PunhOVnQ 一、引言 在数字化时代,消费者维权数据对于市场监管、商家诚信和行业发展具有重要价值。本文基于 2024年315平台线上投诉数据,采用数…

零知识证明:区块链隐私保护的变革力量

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

【CSS文字渐变动画】

CSS文字渐变动画 HTML代码CSS代码效果图 HTML代码 <div class"title"><h1>今天是春分</h1><p>正是春天到来的日子&#xff0c;花都开了&#xff0c;小鸟也飞回来了&#xff0c;大山也绿了起来&#xff0c;空气也有点嫩嫩的气息了</p>…

Qt 控件概述 QLabel

目录 QLabel显示类控件 label如何做到与窗口同步变化 边框 Frame QLabel显示类控件 ​​ ​​ textFormat &#xff1a;设置文件格式 ​ Pixmap &#xff1a;标签图片 label如何做到与窗口同步变化 Qt中对应用户的操作 &#xff1a; 事件和信号 拖拽窗口大小就会触发…

Vue 渲染 LaTeX 公式 Markdown 库

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

网络原理之网络层、数据链路层

1. 网络层 1.1 IP协议 1.1.1 基本概念 主机: 配有IP地址,但是不进⾏路由控制的设备路由器: 即配有IP地址,⼜能进⾏路由控制节点: 主机和路由器的统称 1.1.2 协议头格式 说明&#xff1a; 4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4,对于IPv6来说,就是6 4位头…

版本控制器Git ,Gitee如何连接Linux Gitee和Github区别

&#x1f4d6; 示例场景 假设你和朋友在开发一个「在线笔记网站」&#xff0c;代码需要频繁修改和协作&#xff1a; 只用本地文件管理 每次修改后手动复制文件&#xff0c;命名为 v1.html、v2.html 问题&#xff1a;无法追踪具体改动内容&#xff1b;多人修改易冲突&#xff1…

【动态规划篇】91. 解码方法

91. 解码方法 题目链接&#xff1a; 91. 解码方法 题目叙述&#xff1a; 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; “1” -> ‘A’ “2” -> ‘B’ … “25” -> ‘Y’ “26” -> ‘Z’ 然而&#xff0c;在解码已编码的消息时&#xff0c;你…

Python高级——类的知识

一、知识梳理&#xff1a; 二、货币场景搭建&#xff1a; 1&#xff09;代码展示&#xff1a; class RMB:count 0def __init__(self,yuan0,jiao0,fen0):self.__yuan yuanself.__jiao jiaoself.__fen fenRMB.count 1def __add__(self, other):temp RMB()temp.__yuan se…