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.pswp.cn/pingmian/73062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73062.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入了解 C# 中的 LINQ:功能、語法與應用解析

1. 什么是 LINQ? LINQ(Language Integrated Query,語言集成查詢)是 C# 和其他 .NET 語言中的一種強大的查詢功能,它允許開發者在語言中直接執行查詢操作。LINQ 使得開發者可以使用 C# 語法(或 VB.NET&…

DeepSeek R1 本地部署指南 (3) - 更換本地部署模型 Windows/macOS 通用

0.準備 完成 Windows 或 macOS 安裝: DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 DeepSeek R1 本地部署指南 (2) - macOS 本地部署-CSDN博客 以下內容 Windows 和 macOS 命令執行相同: Windows 管理員啟動:命令提示符 CMD ma…

【總結】Pytest vs Behave,BDD 測試框架哪家強?

引言 在測試驅動開發(TDD)和行為驅動開發(BDD)流行的今天,Pytest和 Behave 成為了 Python 生態中最常見的自動化測試框架。那么,究竟該選擇哪一個?它們各自有哪些優缺點?本篇文章將為你全面解析! 1. 什么是 Pytest&a…

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一種用于對外暴露服務的 Service 類型。它通過在集群的每個節點上開放一個靜態端口(NodePort),使得外部用戶可以通過節點的 IP 地址和該端口訪問集群內部的服務。以下是關于 NodePort Service 的詳細說明&#xff1…

HTML5 Video標簽詳細教程

HTML5 Video標簽詳細教程 簡介 HTML5引入的<video>標簽為網頁提供了原生視頻播放功能&#xff0c;無需依賴Flash等第三方插件。它使得在網頁中嵌入和控制視頻內容變得簡單而強大。本教程將詳細介紹<video>標簽的使用方法、屬性、事件以及相關技術。 基本用法 最…

Linux系統崩潰破案實錄

現代計算環境中&#xff0c;系統的穩定性和可靠性至關重要。然而&#xff0c;即使是最優化的系統也可能會由于硬件故障、軟件漏洞或配置錯誤而崩潰。為了解決這一問題&#xff0c;Linux系統提供了強大的內核崩潰轉儲機制&#xff0c;本文介紹如何收集和分析崩潰日志&#xff0c…

tcping 命令的使用,ping IP 和端口

1. ?Windows系統安裝? ?下載tcping工具?&#xff1a;根據系統位數&#xff08;32位或64位&#xff09;下載對應的tcping.exe文件。?安裝步驟?&#xff1a; 將下載的tcping.exe文件復制到C:\Windows\System32目錄下。如果下載的是64位版本&#xff0c;需將文件名改為tcpi…

深度學習框架PyTorch——從入門到精通(6.1)自動微分

使用torch.autograd自動微分 張量、函數和計算圖計算梯度禁用梯度追蹤關于計算圖的更多信息張量梯度和雅可比乘積 在訓練神經網絡時&#xff0c;最常用的算法是反向傳播。在該算法中&#xff0c;參數&#xff08;模型權重&#xff09;根據損失函數的梯度相對于給定參數進行調整…

跟我學C++中級篇——std::not_fn

一、std::not_fn定義和說明 std::not_fn這個模板函數非常有意思&#xff0c;在前面我們學習過wrapper&#xff08;包裝器&#xff09;&#xff0c;其實它就是通過封裝一個包裝器來實現返回值的非。它的基本定義如下&#xff1a; template< class F > /* 未指定 */ not_…

階躍星辰開源300億參數視頻模型Step-Video-TI2V:運動可控+102幀長視頻生成

階躍星辰&#xff08;StepFun&#xff09;正式開源其新一代圖生視頻模型 Step-Video-TI2V &#xff0c;該模型基于300億參數的Step-Video-T2V訓練&#xff0c;支持文本與圖像聯合驅動生成長達102幀的高質量視頻&#xff0c;在運動控制與場景適配性上實現突破。 核心亮點 …

java查詢es超過10000條數據

java查詢es超過10000條數據 背景:需要每天零點導出es中日志數據到數據庫中給數據分析人員做清洗&#xff0c;然后展示給業務人員。但在es中默認一次最多只能查詢10000條數據。 在這里我就只貼一下關鍵代碼 SearchRequest searchRequest new SearchRequest("索引名"…

使用 libevent 構建高性能網絡應用

使用 libevent 構建高性能網絡應用 在現代網絡編程中&#xff0c;高性能和可擴展性是開發者追求的核心目標。為了實現這一目標&#xff0c;許多開發者選擇使用事件驅動庫來管理 I/O 操作和事件處理。libevent 是一個輕量級、高性能的事件通知庫&#xff0c;廣泛應用于網絡服務…

HeyGem.ai 全離線數字人生成引擎加入 GitCode:開啟本地化 AIGC 創作新時代

在人工智能技術飛速演進的時代&#xff0c;數據隱私與創作自由正成為全球開發者關注的焦點。硅基智能旗下開源項目 HeyGem.ai 近日正式加入 GitCode&#xff0c;以全球首個全離線數字人生成引擎的顛覆性技術&#xff0c;重新定義人工智能生成內容&#xff08;AIGC&#xff09;的…

【leetcode hot 100 39】組合總和

錯誤解法一&#xff1a;每一次回溯都遍歷提供的數組 class Solution {public List<List<Integer>> combinationSum(int[] candidates, int target) {List<List<Integer>> result new ArrayList<List<Integer>>();List<Integer> te…

VSCODE右下角切換環境沒用

VSCODE惦記右下角python版本&#xff0c;切換別的虛擬環境時&#xff0c;始終切換不了&#xff0c;同時右下角彈出&#xff1a; Client Pylance: connection to server is erroring. 取消繼承環境也改了。https://www.cnblogs.com/coreylin/p/17509610.html 還是不行&#xf…

【sql靶場】第23、25,25a關過濾繞過保姆級教程

目錄 【sql靶場】第23、25-28關過濾繞過保姆級教程 第二十三關 第二十五關 1.爆出數據庫 2.爆出表名 3.爆出字段 4.爆出賬號密碼 【sql靶場】第23、25&#xff0c;25a關過濾繞過保姆級教程 第二十三關 從本關開始又是get傳參&#xff0c;并且還有了對某些字符或字段的過…

python每日十題(5)

保留字&#xff0c;也稱關鍵字&#xff0c;是指被編程語言內部定義并保留使用的標識符。Python 3.x版本中有35個保留字&#xff0c;分別為&#xff1a;and, as,assert,async,await,break,class,continue,def,del,elif,else, except, False, finally,for,from,global, if,import…

Pytorch使用手冊—自定義 C++ 和 CUDA 擴展(專題五十二)

提示 從 PyTorch 2.4 開始,本教程已被廢棄。請參考 PyTorch 自定義操作符,了解關于通過自定義 C++/CUDA 擴展擴展 PyTorch 的最新指南。 PyTorch 提供了大量與神經網絡、任意張量代數、數據處理等相關的操作。然而,您可能仍然會發現自己需要一個更自定義的操作。例如,您可能…

CHM(ConcurrentHashMap)中的 sizeCtl 的作用與值變化詳解

學海無涯&#xff0c;志當存遠。燃心礪志&#xff0c;奮進不輟。愿諸君得此雞湯&#xff0c;如沐春風&#xff0c;學業有成。若覺此言甚善&#xff0c;煩請賜贊一枚&#xff0c;共勵學途&#xff0c;同鑄輝煌 ConcurrentHashMap常簡寫為CHM&#xff0c;尤其是在討論并發編程時。…

VLAN綜合實驗報告

一、實驗拓撲 網絡拓撲結構包括三臺交換機&#xff08;LSW1、LSW2、LSW3&#xff09;、一臺路由器&#xff08;AR1&#xff09;以及六臺PC&#xff08;PC1-PC6&#xff09;。交換機之間通過Trunk鏈路相連&#xff0c;交換機與PC、路由器通過Access或Hybrid鏈路連接。 二、實驗…