Python 处理dat文件并画图_python读取dat文件并作图-程序员宅基地

技术标签: python  气象绘图  

import numpy as np
import my_class
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
file = r"D:\lunwen\lunwenshuju\各种作业数据\H500.txt"
f = open(file, "r")
data = np.loadtxt(file, dtype=str,delimiter='\n')
lines = f.readlines()
dataset = []
for line in lines:
    data = line.strip("\n")
    data = data.split('\t')
    dataset.append(data)
dataset = np.array(dataset)
a = np.zeros(48)
i = 0
b = 0
while i < 48:
    a[i] = b
    i = i+1
    b = b+18
a = a.astype(int)  # 化为整数
dataset = np.delete(dataset, a, axis=0)
# 删除空格
# 建立一个37*17*48的三维数组
hgt = np.zeros((17, 37, 48))
# 将二维变成三维
for k in range(48):
    for i in range(17):
        c = dataset[i][0]
        c = c.replace(" ", "")
        w = 6
        for j in range(37):
            hgt[i, j, k] = float(c[w-6:w])
            w = w+6
# 对hgt进行处理
# 画出气候场
hgt_qihou = hgt.mean(2)
# 画出距平场
hgt_juping = hgt
for i in range(48):
    hgt_juping[:, :, i] = hgt_juping[:,:,i]-hgt_qihou
hgt_juping = hgt_juping.mean(2)
#  画出均方差场
hgt_junfangcha = hgt
for i in range(48):
    hgt_junfangcha[:,:,i] =hgt_junfangcha[:,:,i]+np.power((hgt_junfangcha[:,:,i] - hgt_qihou), 2)
hgt_junfangcha = hgt_junfangcha.mean(2)
hgt_junfangcha = np.sqrt(hgt_junfangcha)

hgt_max = np.max(hgt_qihou)  # 算出最大值
hgt_min = np.min(hgt_qihou)  # 算出最小值
# print(hgt_qihou.shape)
# print(hgt_min)
# print(hgt_max)

# 画图
lon = np.arange(60, 150+2.5, 2.5)  # 设立经度
lat = np.arange(0, 40+2.5, 2.5)  # 设立纬度
lon, lat = np.meshgrid(lon, lat)
#  画图设置
plt.rcParams.update({'font.size': 13})
#  解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['KaiTi']
#  解决负号乱码问题
plt.rcParams['axes.unicode_minus'] = False
fig = plt.figure(figsize=[8, 8])
ax = fig.add_subplot(111, projection=ccrs.PlateCarree())
# 设置x, y轴标签
ax.set_xticks(np.arange(60, 150+7.5, 7.5), crs=ccrs.PlateCarree())
ax.set_yticks(np.arange(0, 40+2.5, 5), crs=ccrs.PlateCarree())
xtick_str = ['60', ' ',  '75',' ',  '90',' ', '105',' ', '120',' ', '135',' ', '150']
ax.set_xticklabels(xtick_str, fontsize=18)
ytick_str = ['0', ' ', '10', ' ', '20', ' ', '30', ' ', '40']
ax.set_yticklabels(ytick_str, fontsize=18)
my_class.readshapefile(r"D:\lunwen\lunwenshuju\Shp\ocean_shp\Pacific\Export_Output_5.shp", linewidth=1, ax=ax)  # 太平洋
my_class.readshapefile(r"D:\lunwen\lunwenshuju\Shp\ne_10m_admin_0_countries\ne_10m_admin_0_countries.shp", linewidth=1, ax=ax)  #世界地图 
my_class.readshapefile(r"D:\lunwen\lunwenshuju\Shp\ocean_shp\Indian\iho.shp", linewidth=1, ax=ax)  # 印度洋
my_class.readshapefile(r"D:\lunwen\lunwenshuju\Shp\china\china.shp", linewidth=1, ax=ax)
levels = np.arange(5310, 5890, 1)
precipRateESurface_conf = ax.contourf(lon, lat, hgt_qihou, cmap='RdBu_r', extend='both', levels=levels)
T_cb = fig.colorbar(precipRateESurface_conf, orientation='vertical', shrink=0.75)
# 标签字体设置
font = {'family': 'Times New Roman',
        'weight': 'normal',
        'size': 20
}
T_cb.set_label("gpm", fontdict=font)
ax.set_title("500hP高度场的气候场")
plt.show()

dat数据将后缀改成txt后长这样:

 上面没有经纬度,只有对应经纬度的数据,因此先进行数据处理。

思路:首先每行读取数据按照经纬度,数据是由北向南,由西向东的。通过np.delete()删除每行年份和月份。然后将字符转化成数字读取转化成三维数据,最后进行数据处理后绘图就行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mohenxiang/article/details/127371100

智能推荐

详解XML节点属性排序_xml节点排序-程序员宅基地

文章浏览阅读4.3k次。用python实现“对xml节点中的属性进行排序”_xml节点排序

mysql 压缩包安装( windows)_mysql windows zip安装-程序员宅基地

文章浏览阅读542次。mysql 压缩包安装(windows)_mysql windows zip安装

详解.NET中的动态编译技术_动态编译技术的基本原理-程序员宅基地

文章浏览阅读755次。代码的动态编译并执行是一个.NET平台提供给我们的很强大的工具用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码来扩展我们已有 的应用程序。这在很大程度上给我们提供了另外一种扩展的方式(当然这并不能算是严格意义上的扩展,但至少为我们提供了一种思路)。动态代码执行可以应用在诸如模板生成,外加逻辑扩展等一些场合。一个简单的例子,为了网站那的响应速度,HTML静态页面往往是我们最好的选择,但基于数据驱动的网站往往又很难用静态页面实现,那么将_动态编译技术的基本原理

GEF入门系列(三、应用实例)_gef直线拖动-程序员宅基地

文章浏览阅读2.5k次。构造一个GEF应用程序通常分为这么几个步骤:设计模型、设计EditPart和Figure、设计EditPolicy和Command,其中EditPart是最主要的一部分,因为在实现它的时候不可避免的要使用到EditPolicy,而后者又涉及到Command。现在我们来看个例子,它的功能非常简单,用户可以在画布上增加节点(Node)和节点间的连接,可以直接编辑节点的名称以及改变节点的位置,用户可以撤_gef直线拖动

python使用seaborn对上海的二手房数据进行分析_上海二手房房价可视化分析-程序员宅基地

文章浏览阅读667次。python数据分析_上海二手房房价可视化分析

关于goland2021.1无法debug的问题解决方案_goland无法debug-程序员宅基地

文章浏览阅读7.4k次。来到这里的看官估计要喷我了,心想估计又是千篇一律的复制的文章,这里告诉你,让您失望了。初转go,发现无法debug根本没法干活,难受,旁边的小老弟dubug的飞起,咱老干部在这干着急啊,幸好时间已经是周五了,决定在家一定要好好搞一搞这玩意。IDE的部分问题没截图(没心情啊,失落),除问题时的配置我大概说一下:go version: go1.16.8 darwin/amd64goland:2021.1.2,依稀记得看版本信息里有个x86_64mac:11.5.1,M1当我debug我的_goland无法debug

随便推点

Prometheus入门与实战_prometheus 入门-程序员宅基地

文章浏览阅读276次。1.Prometheus介绍 1.什么是监控? 从技术角度来看,监控是度量和管理技术系统的工具和过程,但监控也提供从系统和应用程序生成的指标到业务价值的转换。这些指标转换为用户体验的度量,为业务提供反_prometheus 入门

YOLOv3训练自己的数据(linux)_imagenet预训练权重yolov3-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏14次。一、下载相关文件1.下载预训练权重文件YOLOv3使用在Imagenet上预训练好的模型参数的基础上继续训练。下载链接为https://pjreddie.com/media/files/darknet53.conv.74或使用wget命令下载:wget https://pjreddie.com/media/files/darknet53.conv.742.下载YOLOv3..._imagenet预训练权重yolov3

【vue】vue-Router 常见面试题_vue-router面试题-程序员宅基地

文章浏览阅读1w次,点赞15次,收藏160次。【vue】vue-Router 常见面试题文章目录【vue】vue-Router 常见面试题一、vue-Router基本使用二、常见面试题1.vue-router 路由钩子函数是什么 执行顺序是什么2. vue-router 动态路由是什么 有什么问题(1) params 方式(2) query 方式(3) params 和 query 的区别3.$route 和 $router 的区别4.Vue-Router 的懒加载如何实现5.vue-router 中常用的路由模式hash 模式history 模式6_vue-router面试题

vue+vuex+router初体验_vue安装zeromq-程序员宅基地

文章浏览阅读587次。前言本人是java开发出生,工作需要研究node/vue,在学习期间参照很多博文,书写示例代码,文中肯定会有很多不专业的地方,记录一方面用于自己梳理知识脉络,一方面方便日后查询,同时还可以让和我处于相同情况的码农们有个参考,废话不多说了,开始撸代码,这才是每个码农关心的问题.vue环境搭建没有详细了解的npm的伙伴们不要紧张,照着做就可以,用的多了就了解了,至于他是怎么实现的需要有精力的童鞋们研究,_vue安装zeromq

Swift 语句(Statements)_swfit did you mean to use a 'do' statement?-程序员宅基地

文章浏览阅读529次。在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会详细地介绍每一种类型的控制流语句。是否将分号(;)添加到_swfit did you mean to use a 'do' statement?

Android 自定义FloatView实现悬浮视图_android floatview-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏9次。 前言:自定义FlaotView不需要任何权限,继承FrameLayout,通过WindowManager实现悬浮。资源文件:drawable、drawable-hdpi、layout菜单背景(menu_bg.xml):&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;selector ="http://s..._android floatview