【python海洋专题四十八】500hpa位势高度场

【python海洋专题四十八】500hpa位势高度场
在这里插入图片描述


# -*- coding: utf-8 -*-
# ---导入数据读取和处理的模块-------
import ast

import pandas as pd
from netCDF4 import Dataset
from pathlib import Path
import xarray as xr
from datetime import datetime
import numpy as np
# ------导入画图相关函数--------
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import matplotlib.ticker as ticker
from cartopy import mpl
import cartopy.crs as ccrs
import cartopy.feature as feature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
from pylab import *
# -----导入颜色包---------
filename = 'D:\matlab_work\函数名为colormore的颜色索引表制作\R_color_txt\R_color_single\\gray80.txt'
file = open(filename, 'r')
lines = file.readlines()
file.close()
data1 = []
for line in lines:
    data1.append(float(line.strip()))
gray = np.array(data1)

# ---read_data---
fu = xr.open_dataset(r'D:\pycharm_work\data\hgt.mon.mean(1).nc')
lat = fu['lat'].data
lon = fu['lon'].data
hgt = fu['hgt'].data
time = fu['time'].data  # 1948-01-01--2021-07-01
# time2 = fu.variables['time'][:]
# # print(type(time2))
level = fu['level'].data
# # ----画全球范围的500hpa的hgt_ano-
# # --find level==500
le = np.where(level == 500)[0]
# # --find time==2000---
time1 = str(time)
# 去除换行
text = time1.replace('\n', '')
# 添加 ','
xs11 = re.sub('\s+', ',', text)
xs1 = xs11[1:-2]
xs2 = xs1.split(",")
time_new = []
for ii in range(0, len(xs2)):
    t11 = xs2[ii]
    str11 = "".join(t11)
    time_new.append(str11[1:5])

time_new = np.array(time_new, dtype=int)
ti = np.where(time_new == 2020)[0]
## ---2000--500hpa--
hgt_500 = hgt[ti, le, :, :]
# print(hgt_500.ndim)
hgt_500_mean = nanmean(hgt_500, axis=0)
#  meshgrid
X, Y = np.meshgrid(lon, lat)
# --plot---
scale = '50m'
plt.rcParams['font.sans-serif'] = ['Times New Roman']  # 设置整体的字体为Times New Roman
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["mathtext.fontset"] = 'cm'  # 数学文字字体
mpl.rcParams["font.size"] = 12  # 字体大小
mpl.rcParams["axes.linewidth"] = 1  # 轴线边框粗细(默认的太粗了)
fig = plt.figure(dpi=300, figsize=(3, 3), edgecolor='blue')  # 设置一个画板,将其返还给fig
ax = fig.add_axes([0.05, 0.08, 0.92, 0.8], projection=ccrs.PlateCarree(central_longitude=180))
ax.set_extent([0, 360, -90, 90], crs=ccrs.PlateCarree())  # 设置显示范围
land = feature.NaturalEarthFeature('physical', 'land', scale, edgecolor='face',
                                   facecolor=feature.COLORS['land'])
ax.add_feature(land, facecolor='0.8', alpha=0.2)
ax.add_feature(feature.COASTLINE.with_scale('10m'), lw=0.5, color=gray/256)  # 添加海岸线:关键字lw设置线宽; lifestyle设置线型
cs = ax.contour(X, Y, hgt_500_mean, levels=np.arange(4900, 5870, 100), colors='k', linestyles='-',
                linewidths=0.5, zorder=5)
plt.clabel(cs, inline=True, fontsize=5, colors='k')
cs = ax.contour(X, Y, hgt_500_mean, levels=np.arange(5860, 5900, 10), colors='k', linestyles='-',
                linewidths=0.5, zorder=5)
plt.clabel(cs, inline=True,  fontsize=5, colors='k')
# --------------添加标题----------------
ax.set_title('500hpa位势高度场', loc="center", fontsize=6, pad=1)
# ------------------利用Formatter格式化刻度标签-----------------
ax.set_xticks(np.arange(0, 361, 60), crs=ccrs.PlateCarree())  # 添加经纬度
ax.set_xticklabels(np.arange(0, 361, 60), fontsize=4)
ax.set_yticks(np.arange(-90, 91, 30), crs=ccrs.PlateCarree())
ax.set_yticklabels(np.arange(-90, 91, 30), fontsize=4)
ax.xaxis.set_major_formatter(LongitudeFormatter())
ax.yaxis.set_major_formatter(LatitudeFormatter())
ax.tick_params(axis='x', top=True, which='major', direction='in', length=3, width=0.8, labelsize=5, pad=0.8,
               color='k')  # 刻度样式  pad代表标题离轴的远近
ax.tick_params(axis='y', right=True, which='major', direction='in', length=3, width=0.8, labelsize=5, pad=0.8,
               color='k')  # 更改刻度指向为朝内,颜色设置为蓝色
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=False, xlocs=np.arange(0, 361, 60), ylocs=np.arange(-90, 91, 30),
                  linewidth=0.25, linestyle='--', color='k', alpha=0.8)  # 添加网格线
gl.top_labels, gl.bottom_labels, gl.right_labels, gl.left_labels = False, False, False, False
plt.savefig('hgt_5001.jpg', dpi=600, bbox_inches='tight', pad_inches=0.1)  # 输出地图,并设置边框空白紧密
plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

excel单元格内换行按什么快捷键

如果我们使用excel软件的时候,因为一些日常的操作太过繁琐想要简化自己的操作步骤的话,其实是有很多快捷方式在其中的。那么对excel单元格内换行按什么快捷键这个问题,据小编所知我们可以在表格中使用Alt Enter来进行换行。详细内容就来看下…

LangChain 13输出解析Output Parsers 自动修复解析器

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…

scanpy 读取mtx文件

import scanpy as sc adata sc.read("./GSE144136_GeneBarcodeMatrix_Annotated.mtx") ##

【bmp文件怎么批量改成JPG?】

操作 在需要修改格式的图片文件夹中新建一个TXT文本文档 文档中输入(ren *.原图片类型 *.需要修改成的图片类型) ren *.bmp *.jpg 输入完成后保存 将刚刚新建的文档重命名 修改为.bat后缀的文件 弹出弹窗,点击是 双击此程序,即可将文件夹中的BMP图…

UniPro集成华为云WeLink 为企业客户构建互为联接的协作平台

华为云WeLink是华为开启数字化办公体验、帮助企业实现数字化转型的实践,类似钉钉。UniPro的客户企业中,有使用WeLink作为协作工具的,基于客户的实际业务需求,UniPro实现了与WeLink集成的能力,以帮助客户企业丰富和扩展…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审…

【【Linux下的Petallinux 以及其他的配置】】

Linux下的Petallinux 以及其他的配置 sudo apt-get install iproute2 gawk python3 python build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat chrpath socat xterm autoconf libtoo…

C语言--每日选择题--Day27

第一题 1. 对于代码段,问下面不可以表示a[1]地址的是() int a[10]; A:&a[0] 1 B:a sizeof(int) C:(int*)&a 1 D:(int*)((char*)&a sizeof(int)) 答案及解析 A A:取到…

SpringBoot : ch06 整合 web(二)

前言 SpringBoot作为一款优秀的框架,不仅提供了快速开发的能力,同时也提供了丰富的文档和示例,让开发者更加容易上手。在本博客中,我们将介绍如何使用SpringBoot来整合Web应用程序的相关技术,并通过实例代码来演示如何…

全新爱蜗影视优码双端影视源码v9.1/影视视频APP源码+支持代理/在线支付+支持对应苹果CMS

源码简介: 这个是最新爱蜗影视优码双端影视源码,作为实用方便的影视视频APP源码,它不仅支持代理/在线支付,而且也支持对应苹果CMS。 爱蜗影视优码双端影视支持对应苹果CMS支持代理在线支付 带图文教程,全新美化多功能…

盘点最新的十大地推拉新app推广接单平台,一手接单渠道分享

小编主推:聚量推客 一手官签直营 随着网络的发展,越来越多的app运应而生社交类、购物类、娱乐类、资讯类、教育类、健康类、金融类为了将这些应用程序推广给更多的人使用,地推拉新app推广接单平台应运而生。本文将介绍十大地推拉新app推广接…

几何教学工具 Sketchpad几何画板 mac软件特色

Sketchpad几何画板 for Mac是一款适用于macOS系统的几何教学工具,用户可以在其画板上进行各种几何图形的绘制、演示,帮助教师了解学生的思路和对概念的掌握程度。此外,Sketchpad更深层次的功能则是可以用来进行几何交流、研究和讨论&#xff…

单片机学习11——矩阵键盘

矩阵键盘: 这个矩阵键盘可以接到P0、P1、P2、P3都是可以的。 使用矩阵键盘是能节省单片机的IO口。 P3.0 P3.1 P3.2 P3.3 称之为行号。 P3.4 P3.5 P3.6 P3.7 称之为列号。 矩阵键盘检测原理: 1、检查是否有键按下; 2、键的抖动处理&#xf…

电机工作制

电机工作制 1.什么是电机工作制2.电机工作制的分类 最近在做电机控制器,看到很多电机铭牌上写着工作制:S*,有S1,有S2,查了一下,学习一下是什么意思。 1.什么是电机工作制 根据GBT 755-2019《旋转电机定额…

机器学习的复习笔记4-岭回归与多项式回归

一、岭回归 在简单的线性回归中,一味追求平方误差最小化,R2值尽可能大,可能会受到噪声的严重干扰。噪声,即偶发的错误的值。 如图,若为满足所有点的拟合(虚线),表面上看R2值小&…

springboot+vue实现websocket通信实例,进入页面建立连接

springbootvue实现websocket通信实例 进入页面建立连接 前端代码&#xff1a; <template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true" v-show&qu…

数据治理:数据交换与数据集成

数据交换 基本概念 数据交换是将符合一个源模式的数据转换为符合目标模式数据的问题&#xff0c;该目标模式尽可能准确并且以与各种依赖性一致的方式反映源数据。 早期数据交换的一个主要方向是在关系模式之间从数据交换的上下文中寻求一阶查询的语义和复杂性。2008 年&…

java选择排序和冒泡排序

1.区别 选择排序和冒泡排序的区别主要在于算法逻辑、稳定性和交换成本。 算法逻辑&#xff1a;选择排序和冒泡排序都属于比较排序&#xff0c;但在具体算法逻辑上有所不同。冒泡排序是通过相邻元素之间的比较和交换&#xff0c;将较大&#xff08;或较小&#xff09;的元素逐…

一起学docker系列之十三使用Dockerfile构建带有Java 8、Vim和Ifconfig功能的CentOS镜像

目录 1 前言2 构建流程3 Dockerfile说明4 解释Dockerfile5 构建Docker镜像6 运行Docker容器7 总结8 参考地址 1 前言 Docker是一个强大的工具&#xff0c;可以创建一致、可移植和隔离的环境。在本指南中&#xff0c;我们将介绍如何创建一个基于CentOS的Docker镜像&#xff0c;…

从容应对高并发:RabbitMQ与消息限流策略的完美结合

在当今互联网时代&#xff0c;高并发访问已成为许多应用系统面临的常见挑战之一。对于需要处理大量请求的系统来说&#xff0c;如何保证系统的稳定性和可靠性是一个关键问题。RabbitMQ作为一种可靠的消息队列中间件&#xff0c;可以帮助解决高并发环境下的消息处理问题。而结合…