Plotting World Map in Python

1. 方法一 pygal

Plotting World Map Using Pygal in Python

import pygal # create a world map 
worldmap =  pygal.maps.world.SupranationalWorld() # set the title of map 
worldmap.title = 'Continents'# adding the continents 
worldmap.add('Africa', [('africa')]) 
worldmap.add('North america', [('north_america')]) 
worldmap.add('Oceania', [('oceania')]) 
worldmap.add('South america', [('south_america')]) 
worldmap.add('Asia', [('asia')]) 
worldmap.add('Europe', [('europe')]) 
worldmap.add('Antartica', [('antartica')]) # save into the file 
worldmap.render_to_file('abc.svg') print("Success") 

结果:
在这里插入图片描述
参考资料:
https://www.pygal.org/en/stable/documentation/types/maps/pygal_maps_world.html

2. 方法二 cartopy

官网资料:https://foundations.projectpythia.org/core/cartopy/cartopy.html
参考资料:https://scitools.org.uk/cartopy/docs/latest/

import matplotlib.pyplot as plt
import cartopy.crs as ccrsnplots = 2fig = plt.figure(figsize=(6, 6))for i in range(0, nplots):central_longitude = 0 if i == 0 else 180ax = fig.add_subplot(nplots, 1, i+1,projection=ccrs.PlateCarree(central_longitude=central_longitude))ax.coastlines(resolution='110m')ax.gridlines()
plt.show()

结果:PlateCarree投影(Cartopy的默认投影)
在这里插入图片描述

投影方式:Cartopy projection list

  • projection=ccrs.Mollweide() 摩尔威德投影(Mollweide Projection)是经线投影成为椭圆曲线的一种等面积伪圆柱投影。

在这里插入图片描述

  • Robinson:伪圆柱投影。类似于椭圆弧的经线等间距分布,并且以中央子午线为中心向两侧凸出。
    在这里插入图片描述

具体投影类型可参考:https://www.cnblogs.com/youxiaogang/p/14247184.html

绘制国家边界线:How to draw country borders in Cartopy
代码:

import cartopy.crs as ccrs
import cartopy.feature as cf
ax = plt.axes(projection = ccrs.Mercator())
ax.add_feature(cf.COASTLINE)
ax.add_feature(cf.BORDERS)
# Make figure larger
plt.gcf().set_size_inches(20, 10)
# Save figure as SVG
plt.savefig("Cartopy-Borders.svg")

还可以添加:

ax.add_feature(cfeature.BORDERS, linewidth=0.5, edgecolor='black')
ax.add_feature(cfeature.STATES, linewidth=0.3, edgecolor='brown')

完整代码:

fig = plt.figure(figsize=(10, 5))
projMoll = ccrs.Mollweide(central_longitude=0)
ax = fig.add_subplot(1, 1, 1, projection=projMoll)#Mollweide,Robinson,PlateCarree
lonmin = -175
lonmax = 175
latmin = -55
latmax = 80
ax.set_extent([lonmin, lonmax, latmin, latmax])
ax.add_feature(cfeature.COASTLINE)# 添加海岸线
ax.add_feature(cfeature.BORDERS, linewidth=0.5, edgecolor='blue')#添加国家线

结果:
在这里插入图片描述
参考资料:https://foundations.projectpythia.org/core/cartopy/cartopy.html

如何不显示图框:

ax1.axis('off')#关闭子图的坐标轴
ax1.set_aspect('auto')#将子图的纵横比例设置为自动调整

效果如下:
在这里插入图片描述

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

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

相关文章

加快Qt的编译速度有多种方法,以下是一些建议:

启用并行编译:Qt Creator默认采用串行编译方式,即一次只编译一个文件。在处理大量文件时,这种方式的效率较低。通过启用并行编译,可以同时编译多个文件,从而显著提高编译速度。 减少头文件依赖:头文件的依…

spring boot中redis操作Hash踩坑

目录 问题 原因 解决方案 问题 如下代码是获取短信验证码功能,会先检查下前面五分钟内发没发过验证码,也就是有没有手机号对应缓存key,有的话刷新过期时间,没有就缓存一下设置过期时间为5分钟。 但是经过测试在第一次发送时缓…

Java 新特性在实际项目中的应用与优势

Java的新特性在实际项目中的应用和优势主要体现在以下几个方面: Lambda表达式:Lambda表达式简化了代码编写,可以更方便地使用函数式编程的思想。在实际项目中,可以通过Lambda表达式简化集合的遍历、排序等操作,提高代码…

PyTorch深度学习实战(44)——基于 DETR 实现目标检测

PyTorch深度学习实战(44)——基于 DETR 实现目标检测 0. 前言1. Transformer1.1 Transformer 基础1.2 Transformer 架构 2. DETR2.1 DETR 架构2.2 实现 DETR 模型 3. 基于 DETR 实现目标检测3.1 数据加载与模型构建3.2 模型训练与测试 小结系列链接 0. 前…

自动驾驶---Control之LQR控制

1 前言 在前面的系列博客文章中为读者阐述了很多规划相关的知识(可参考下面专栏),本篇博客带领读者朋友们了解控制相关的知识,后续仍会撰写规控相关文档。 在控制理论的发展过程中,人们逐渐认识到对于线性动态系统的控…

javascript的AMD模式

AMD(Asynchronous Module Definition,异步模块定义)是一种JavaScript模块化开发的规范,它主要应用于浏览器环境,用于解决浏览器端的模块化和异步加载问题。AMD规范由James Burke等人在开发Dojo Toolkit的过程中提出&am…

VBA实战(Excel)(5):介绍一种排列组合算法

1. 需求场景 有多个条件,条件个数不定,每个条件有若干种情况,情况个数不定,输出所有条件可能的情况的排列组合。 2.举例 假设第一次有5个情况要填,第一个条件20种情况,第二个5种,第三个40种&…

视频封面:如何用前端实现视频帧截图

在这样一个图像化极其重要的时代,从视频中提取精彩瞬间,即视频帧截图的技术,已成为前端开发中的一个亮点。JavaScript作为网页动态效果和交互的主力军,其在视频处理领域能力逐渐被挖掘和重视,尤其是视频帧截图技术的应…

一键实现文件重命名:巧妙运用随机大写字母命名,复制新文件名,轻松管理文件库!

我们的电脑里总是堆积着各种各样的文件。无论是工作文档、生活照片还是学习资料,这些文件都承载着我们的回忆和辛勤努力。然而,随着时间的推移,文件名的混乱和重复逐渐成为我们管理文件的难题。为了解决这一困扰,我们推出了一款创…

TypeScript 中的装饰器

1. 装饰器的概念 装饰器是一种特殊的语法,它可以附加到类、方法、属性或参数上,并在运行时动态地修改它们的行为。装饰器通常用于添加元数据、实现切面编程、实现依赖注入等功能。在 TypeScript 中,装饰器是一种实验性的特性,需要…

09.爬虫---正则解析爬取数据

09.正则解析爬取数据 1.目标网站2.具体实现3.正则表达式分析4.完整代码并存入表格 1.目标网站 直达目标网站 https://movie.douban.com/chart 2.具体实现 我们来拿取一下上面网页的代码如下: from urllib import requesturl https://movie.douban.com/chart headers {Us…

解决 DBeaver 查询时不刷新数据,需要重新连接才会刷新,有缓存一样

DBeaver 查询时总是第一次有数据,再次执行查询数据不会刷新,像是有缓存一样,需要重新连接再查询才会刷新,知道肯定是哪里设置的不对,但是一直没找到,实在是重连太烦了,多次尝试终于找到了设置。…

什么是序列化?Java如何实现序列化?

一、序列化的定义 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,序列化是将一个对象转换成一个字节序列,以便可以将其写入到磁盘、通过网络发送到另一个运行Java的虚拟机,或者将其永久地保存在数据库中。反序列化则…

【数据结构】从前序与中序遍历,或中序与后序遍历序列,构造二叉树

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 首先,根据先序遍历可以确定根节点E,再在中序遍历中通过E确定左树和右数 ; 设立inBegin和inEnd,通过这两个参数的游走,来进行子树的创建&a…

Spring 过滤器:OncePerRequestFilter 应用详解

在Web应用中,过滤器(Filter)是一个强大的工具,它可以在请求到达目标资源之前或响应返回客户端之前对请求或响应进行拦截和处理。然而,在某些情况下,我们可能希望确保过滤器逻辑在一次完整的HTTP请求中仅执行…

ApiJson简单使用

前言 最近在正式迭代中插入了一个大屏演示项目,因为后端开发人员任务都安排满了,而演示项目逻辑比较简单,大多是直接查表就能搞定,所以只能想办法让前端直接和数据库交互,增加开发速度。在找工具时发现了ApiJson。尝试…

详解redis单线程设计思路

写在文章开头 我们都知道redis是一个基于单线程实现高效网络IO和键值对读写操作的内存数据库,本文将从源码的角度剖析一下redis高效的单线程设计。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源项目 Java Guide 的维护者之一…

基于.NetCore和ABP.VNext的项目实战六:JWT

添加小绿锁,Nuget包下载Swashbuckle.AspNetCore.Filters,在扩展方法AddSwagger(this IServiceCollection services)中调用。 public static IServiceCollection AddSwagger(this IServiceCollection services){return services.AddSwaggerGen(options =>{...var security …

Mac电脑重置网络命令

在Mac电脑上重置网络设置可以通过终端命令来实现。以下是几种方法,包括刷新DNS缓存、重置网络接口,以及重置Wi-Fi设置。 刷新DNS缓存 要刷新DNS缓存,可以使用以下命令: sudo dscacheutil -flushcache; sudo killall -HUP mDNSR…

一键生成迷宫-Word插件-大珩助手新功能

Word大珩助手是一款功能丰富的Office Word插件,旨在提高用户在处理文档时的效率。它具有多种实用的功能,能够帮助用户轻松修改、优化和管理Word文件,从而打造出专业而精美的文档。 【新功能】迷宫生成器 1、可自定义迷宫大小; …