【气象常用】间断时间序列图

效果图:

主要步骤:

1. 数据准备:随机数组

2. 图像绘制:绘制间断的时间序列

详细代码:着急的直接拖到最后有完整代码

步骤一:导入库包及图片存储路径并设置中文字体为宋体,西文为新罗马(没有的库包要先下好奥)

###############################################################################
# 导入库包并设置字体
import numpy as np
import matplotlib.pyplot as plt# 设置西文字体为新罗马字体,中文为宋体,字号为12
from matplotlib import rcParams
config = {"font.family": 'serif',"font.size": 12,"mathtext.fontset": 'stix',"font.serif": ['SimSun'],}
rcParams.update(config)
rcParams['axes.unicode_minus']=False
datapath = r'H:/00.csdn/01data/'
figpath = r'H:/00.csdn/02fig/'
shppath = r'H:/00.csdn/04shp/cn_shp/Province_9/Province_9.shp'

步骤二:随便生成数组,注意:x比y的个数少(月数-1)个,原因是有(n-1)个衔接(虚线那里)

###############################################################################
nday1 = 31
nday2 = 30
nday3 = 31
nday4 = 31
# 读入自己的数据
x = range(0, nday1 + nday2 + nday3 + nday4 - 3, 1)
y11 = np.random.randint(-10, 5, (nday1))
y12 = y11 - 0.5
y21 = np.random.randint(10, 15, (nday2))
y22 = y21 + 0.5
y31 = np.random.randint(20, 30, (nday3))
y32 = y31 + 0.5
y41 = np.random.randint(15, 25, (nday4))
y42 = y41 - 0.5

步骤三:绘制图像,主要是控制起始点x位置及x与y的个数匹配,并计算对应个点的真实日期

###############################################################################
# 画图
fig = plt.figure(figsize=(15, 8))
ax = fig.add_axes([0.1, 0.6, 0.6, 0.4])ax.plot(x[0:nday1], y11, 'k-', label='OBS')
ax.plot(x[0:nday1], y12, 'k--', label='WRF')
ax.plot(x[nday1-1:nday1+nday2-1], y21, 'k-',)
ax.plot(x[nday1-1:nday1+nday2-1], y22, 'k--',)
ax.plot(x[nday1+nday2-2:nday1+nday2+nday3-2], y31, 'k-',)
ax.plot(x[nday1+nday2-2:nday1+nday2+nday3-2], y32, 'k--',)
ax.plot(x[nday1+nday2+nday3-3:], y41, 'k-',)
ax.plot(x[nday1+nday2+nday3-3:], y42, 'k--',)ax.set(xlim=(0, 118), xticks=[0, 4, 9, 14, 19, 24, 30, 34, 39, 44, 49, 54, 59, 64, 69, 74, 79, 84, 89, 94, 99, 104, 109, 114, 118], xticklabels=[1, 5, 10, 15, 20, 25, 1, 5, 10, 15, 20, 25, 1, 5, 10, 15, 20, 25, 1, 5, 10, 15, 20, 25, 30],ylim=(-11, 31), yticks=range(-10, 31, 5),yticklabels=range(-10, 31, 5),ylabel='Temperature(℃)',)
ax.text(x=0.01, y=1.03, s='T2m_2016_weining(OBS/CTL)', transform=ax.transAxes, fontsize=12)
ax.text(x=0.45, y=-0.21, s='Time(mm/dd)', transform=ax.transAxes, fontsize=12)
ax.text(x=0.00, y=-0.13, s='Jan/', transform=ax.transAxes, fontsize=12)
ax.text(x=0.26, y=-0.13, s='Apr/', transform=ax.transAxes, fontsize=12)
ax.text(x=0.5, y=-0.13, s='Jun/', transform=ax.transAxes, fontsize=12)
ax.text(x=0.76, y=-0.13, s='Oct/', transform=ax.transAxes, fontsize=12)plt.axvline(x=30, color='k', linestyle='--')
plt.axvline(x=59, color='k', linestyle='--')
plt.axvline(x=89, color='k', linestyle='--')ax.legend(frameon=False, fontsize=12)

步骤四:保存图像

###############################################################################
# 存图
plt.savefig(figpath+'214 断裂时间序列', dpi=600, bbox_inches = 'tight')
plt.show()

完整代码在这里:

###############################################################################
# 导入库包并设置字体
import numpy as np
import matplotlib.pyplot as plt# 设置西文字体为新罗马字体,中文为宋体,字号为12
from matplotlib import rcParams
config = {"font.family": 'serif',"font.size": 12,"mathtext.fontset": 'stix',"font.serif": ['SimSun'],}
rcParams.update(config)
rcParams['axes.unicode_minus']=False
datapath = r'H:/00.csdn/01data/'
figpath = r'H:/00.csdn/02fig/'
shppath = r'H:/00.csdn/04shp/cn_shp/Province_9/Province_9.shp'
###############################################################################
nday1 = 31
nday2 = 30
nday3 = 31
nday4 = 31
# 读入自己的数据
x = range(0, nday1 + nday2 + nday3 + nday4 - 3, 1)
y11 = np.random.randint(-10, 5, (nday1))
y12 = y11 - 0.5
y21 = np.random.randint(10, 15, (nday2))
y22 = y21 + 0.5
y31 = np.random.randint(20, 30, (nday3))
y32 = y31 + 0.5
y41 = np.random.randint(15, 25, (nday4))
y42 = y41 - 0.5
###############################################################################
# 画图
fig = plt.figure(figsize=(15, 8))
ax = fig.add_axes([0.1, 0.6, 0.6, 0.4])ax.plot(x[0:nday1], y11, 'k-', label='OBS')
ax.plot(x[0:nday1], y12, 'k--', label='WRF')
ax.plot(x[nday1-1:nday1+nday2-1], y21, 'k-',)
ax.plot(x[nday1-1:nday1+nday2-1], y22, 'k--',)
ax.plot(x[nday1+nday2-2:nday1+nday2+nday3-2], y31, 'k-',)
ax.plot(x[nday1+nday2-2:nday1+nday2+nday3-2], y32, 'k--',)
ax.plot(x[nday1+nday2+nday3-3:], y41, 'k-',)
ax.plot(x[nday1+nday2+nday3-3:], y42, 'k--',)ax.set(xlim=(0, 118), xticks=[0, 4, 9, 14, 19, 24, 30, 34, 39, 44, 49, 54, 59, 64, 69, 74, 79, 84, 89, 94, 99, 104, 109, 114, 118], xticklabels=[1, 5, 10, 15, 20, 25, 1, 5, 10, 15, 20, 25, 1, 5, 10, 15, 20, 25, 1, 5, 10, 15, 20, 25, 30],ylim=(-11, 31), yticks=range(-10, 31, 5),yticklabels=range(-10, 31, 5),ylabel='Temperature(℃)',)
ax.text(x=0.01, y=1.03, s='T2m_2016_weining(OBS/CTL)', transform=ax.transAxes, fontsize=12)
ax.text(x=0.45, y=-0.21, s='Time(mm/dd)', transform=ax.transAxes, fontsize=12)
ax.text(x=0.00, y=-0.13, s='Jan/', transform=ax.transAxes, fontsize=12)
ax.text(x=0.26, y=-0.13, s='Apr/', transform=ax.transAxes, fontsize=12)
ax.text(x=0.5, y=-0.13, s='Jun/', transform=ax.transAxes, fontsize=12)
ax.text(x=0.76, y=-0.13, s='Oct/', transform=ax.transAxes, fontsize=12)plt.axvline(x=30, color='k', linestyle='--')
plt.axvline(x=59, color='k', linestyle='--')
plt.axvline(x=89, color='k', linestyle='--')ax.legend(frameon=False, fontsize=12)
###############################################################################
# 存图
plt.savefig(figpath+'214 断裂时间序列', dpi=600, bbox_inches = 'tight')
plt.show()

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

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

相关文章

冷干机使用中的注意事项

冷干机使用中的注意事项 使用冷干机时,以下是几个注意事项: 安装位置:选择一个通风良好、温度适宜的位置安装冷干机。确保周围环境没有过多的灰尘、腐蚀性气体或其他污染物,以免对冷干机的正常运行和寿命产生不利影响。 电源要求…

插件:MediaPipe

一、介绍 这是一个使用 MediaPipe (0.10.9) 的 Unity (2022.3.16f1) 原生插件;此项目的目标是将 MediaPipe API (C) 逐个移植到 C#,以便可以从 Unity 调用它。开源地址。 二、实战

C++ STL 函数对象:隐藏的陷阱,如何避免状态带来的麻烦?

STL 函数对象:无状态即无压力 一、简介二、函数对象三、避免在函数对象中保存状态3.1、函数对象3.2、lambda 表达式 四、选择合适的更高层次的结构五、总结 一、简介 在使用 C 标准模板库 (STL) 时,函数对象 (Function Object) 是一种强大的工具&#x…

02324 自学考试 离散数学屈婉玲教材 目录

02324 自学考试 离散数学屈婉玲教材 目录 02324 自学考试 离散数学屈婉玲教材 02324离散数学全程班历年真题资料

python argparse小数用科学记数法传参

python 代码中小数可写成形如 1e-4 的形式,现试验 python 处理命令行参数的 argparse 包支不支持传此种形式的小数参数。 Code # test.py import argparse parser argparse.ArgumentParser() parser.add_argument(--lr1, typefloat) parser.add_argument(--lr2,…

技术面试,项目实战,求职利器

之前找工作一直想找一个能真正系统性学开发的地方,之前毕业找工作的时候无意间碰到下面这个网站,感觉还挺不错的,用上面的技术实战内容应对技术面试,也算是求职利器了。有需要的可以自取: https://how2j.cn?p156336 实…

VMware虚拟机中ubuntu使用记录(10)—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

SWM320系列应用

一、Swm320系列 SPI 应用 现象:应用SWM320的SPI1的模式0作为从机,整体产品硬件平台同步上电,从机的SPI无法正常工作,进不了中断,手工复位一次或连接SWD调试就正常了,这样的情况应该怎么解决?其…

Windows远程连接命令?

Windows操作系统提供了多种远程连接命令,使用户可以通过网络连接到远程计算机,并在远程操作系统上执行操作。远程连接命令可方便实现远程工作、故障排查和系统维护等任务。本文将介绍几种常见的Windows远程连接命令及其基本使用方法。 远程连接命令 Win…

03. SpringBoot 整合 Redis

文章目录 Jedis导入依赖测试连接Jedis 实现事务 SpringBoot 整合 RedisRedisTemplateSpringBoot 整合 Redis 测试RedisTemplate 序列化RedisUtils Jedis Jedis 是 Redis 官方推荐的 Java 连接工具。 导入依赖 </dependencies><dependency><groupId>redis.c…

C++中的内存布局与数据存储详解

C中的内存布局和数据存储是指程序在运行时&#xff0c;如何在内存中组织和管理数据。这对于理解程序的性能、调试和优化非常重要。C程序的内存布局通常分为以下几个主要区域&#xff1a; 代码段&#xff08;Text Segment&#xff09;数据段&#xff08;Data Segment&#xff0…

C语言 | Leetcode C语言题解之第112题路径总和

题目&#xff1a; 题解&#xff1a; bool hasPathSum(struct TreeNode *root, int sum) {if (root NULL) {return false;}if (root->left NULL && root->right NULL) {return sum root->val;}return hasPathSum(root->left, sum - root->val) ||ha…

一个普通双非女生的秋招之路

大家好&#xff0c;我是小布丁。 先简单地做个自我介绍&#xff1a; 我今年本科毕业于某双非院校&#xff08;属于那种没什么人听说过的小学校&#xff09;&#xff0c;学的是计算机专业&#xff0c;英语四级水平&#xff08;没办法&#xff0c;六级确实没过&#xff09;。我本…

逃逸分析和标量替换有何区别

1、逃逸分析&#xff08;Escape Analysis&#xff09;&#xff1a; 逃逸分析是一种分析技术&#xff0c;用于判断一个对象&#xff08;通常是一个Java对象&#xff09;在方法执行过程中是否会被外部方法或线程所引用。它主要关注对象的动态作用域&#xff0c;即对象在方法执行…

从0开始带你成为Kafka消息中间件高手---第二讲

从0开始带你成为Kafka消息中间件高手—第二讲 那么在消费数据的时候&#xff0c;需要从磁盘文件里读取数据后通过网络发送出去&#xff0c;这个时候怎么提升性能呢&#xff1f; 首先就是利用了page cache技术&#xff0c;之前说过&#xff0c;kafka写入数据到磁盘文件的时候&…

企业微信hook接口协议,ipad协议http,根据手机号搜索联系人

根据手机号搜索联系人 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","phoneNumber":"1357xxxx" } 返回示例 {"data&q…

如何使用Python的map()和filter()函数?

Python中的map()和filter()函数是处理可迭代对象&#xff08;如列表、元组等&#xff09;时非常有用的内置函数。 1. map()函数 map()函数将一个函数应用于一个输入列表&#xff08;或其他可迭代对象&#xff09;的所有元素&#xff0c;并返回一个包含所有函数返回值的迭代器…

【全网最全最详细】JavaSE基础面试题(未完待续...)

一、接口和抽象类的区别? 方法定义:接口和抽象类,最明显的区别就是接口只是定义了一些方法而已,在不考虑Java8中default方法情况下,接口中只有抽象方法,是没有实现的代码的。(Java8中可以有默认方法) 修饰符:抽象类中的修饰符可以有public、protected和private和<…

自动化办公:openpyxl操作Excel的7个示例

1. 引言&#xff1a;Python与Excel自动化办公的优势 在日常工作中&#xff0c;Excel作为数据分析和报告制作的利器&#xff0c;几乎无人不知无人不晓。然而&#xff0c;面对大量重复的数据录入、整理、分析任务时&#xff0c;手动操作不仅耗时费力&#xff0c;还容易出错。此时…