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

news2024/11/14 1:12:54

效果图:

主要步骤:

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.coloradmin.cn/o/1696208.html

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

相关文章

没有telnet情况下判断主机端口是否开放的方法

没有telnet情况下判断主机端口是否开放的方法 方式一 ssh -v 101.132.64.231 -p 80显示结果 如果有显示 debug1: Connection established. 就说明端口是开放的 端口未开放的情况是显示 方式二 echo >/dev/tcp/101.132.64.231/3306效果如下 如果没有任何输出,…

Redis开发实战

单机部署安装 服务端下载,安装,启动去官网下载最新的版本:http://redis.io/download ,这里用的是3.0.2解压后,进入解压好的文件夹redis的安装非常简单,因为已经有现成的Makefile文件,所以直接先…

Photoshop插件(UXP)编写过程中,如何更新sp-checkbox的选中状态

✨问题说明 sp-checkbox是uxpSpectrum UXP Widgets下的一个小组件&#xff0c;内置样式大概是这样&#xff1a; 那么&#xff0c;如果用js动态的改变选中的状态&#xff0c;应该如何做呢&#xff1f; 如果直接是html来写&#xff1a; <sp-checkbox checked>Checked<…

freemarker ftl模板 格式、列表、图片

文章目录 前言一、freemarker实现内容替换二、ftl 模板1.word另存ftl2.编辑ftl文件2.1 了解一下常用的标记及其说明2.2 list处理2.3 红线2.4 图片 总结 前言 固定内容word生成&#xff1a;freemarker ftl模板 动态表格生成&#xff1a;https://blog.csdn.net/mr_wanter/articl…

基于MetaGPT构建LLM多智能体

前言 你好&#xff0c;我是GISer Liu&#xff0c;在上一篇文章中&#xff0c;我们用了两万多字详细拆解了单个Agent的组成&#xff0c;并通过Github Trending订阅智能体理解MetaGPT框架的订阅模块如何解决应用问题&#xff0c;但是对于复杂&#xff0c;并行的任务&#xff0c;单…

Java进阶学习笔记20——枚举

认识枚举&#xff1a; 枚举是一种特殊的类。 枚举类的格式&#xff1a; 说明&#xff1a; 第一行是罗列枚举的对象名称。只能写合法的标识符&#xff08;名称&#xff09;&#xff0c;多个名称用逗号隔开。 这些名称本质上都是常量&#xff0c;每个变量都会记住枚举类的一个…

HIVE3.1.3+ZK+Kerberos+Ranger2.4.0高可用集群部署

目录 一、集群规划 二、介质下载 三、基础环境准备 1、解压文件 2、配置环境变量 四、配置zookeeper 1、创建主体 2、修改zoo.cfg 3、新增jaas.conf 4、新增java.env 5、重启ZK 6、验证ZK 五、配置元数据库 六、安装HIVE 1、创建Hiver的kerberso主体 2…

U盘引导盘制作Rufus v4.5.2180

软件介绍 Rufus小巧实用开源免费的U盘系统启动盘制作工具和格式化U盘的小工具&#xff0c;它可以快速将ISO镜像文件制作成可引导的USB启动安装盘&#xff0c;支持Windows或Linux启动&#xff0c;堪称写入镜像速度最快的U盘系统制作工具。 软件截图 更新日志 github.com/pbat…

Digital Image Processing System(DIPS)

数字图像处理系统 Digital Image Processing System&#xff08;DIPS&#xff09; 早前版本&#xff1a; ​​​​​​​DIPS_YTPC OCR-CSDN博客

(南京观海微电子)——TFT LCM的作用

VCOM介绍 VCOM是液晶分子偏转的参考电压 &#xff0c;要求要稳定&#xff0c;对液晶显示有直接影响&#xff0c;具体的屏不同的话 也是不同的。 电压的具体值是根据输入的数据以及Vcom电压大小来确定的&#xff0c;用来显示各种不同灰阶&#xff0c;也就是实现彩色显示GAMMA简…

【知识蒸馏】deeplabv3 logit-based 知识蒸馏实战,对剪枝的模型进行蒸馏训练

本文将对【模型剪枝】基于DepGraph(依赖图)完成复杂模型的一键剪枝 文章中剪枝的模型进行蒸馏训练 一、逻辑蒸馏步骤 加载教师模型定义蒸馏loss计算蒸馏loss正常训练 二、代码 1、加载教师模型 教师模型使用未进行剪枝&#xff0c;并且已经训练好的原始模型。 teacher_mod…

Strategy设计模式

Strategy设计模式举例。 看图&#xff1a; 代码实现&#xff1a; #include <iostream>using namespace std;class FlyBehavior { public:virtual void fly() 0; };class QuackBehavior { public:virtual void quack() 0; };class FlyWithWings :public FlyBehavior …

新人攻略:避开这3大坑,让老员工主动带你飞!

进入职场的新人们&#xff0c;常常会感到困惑和挑战。他们可能会发现自己在与老员工的交流中遇到难题&#xff0c;甚至发现老员工并不愿意花费时间和精力去指导他们。这背后的原因是什么呢&#xff1f;又该如何改善这一现象呢&#xff1f;本文将从新员工的角度出发&#xff0c;…

无人机飞手:ASFC无人机和航模爱好者证书详解

ASFC无人机和航模爱好者证书是由中国航空运动协会&#xff08;ASFC&#xff09;颁发的一种无人机操作资格认证。这种证书在无人机和航模爱好者群体中享有广泛的认可度&#xff0c;并被视为操作无人机的一种重要资质。 ASFC证书的定义和用途十分明确。它是民航局颁发的民用无人驾…

C++中的继承详解

1.继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保 持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象 程序设计的…

产品数据特性驱动设计

一、什么是数据特性 一个产品在宏观的视角下,是不同功能模块的有机组合;在微观的视角上,是千丝万缕的数据连接。 基于模块化设计思想,对产品进行业务化梳理,对业务进行模块化拆分出功能模块,功能模块就是产品的“逻辑”,而功能中的数据就是“特性”。 业务:比较固定…

马尔可夫和比奈梅-切比雪夫不等式

目录 一、说明 二、自然界的极限性 三、马尔可夫不等式 3.1 最早提出 3.2 马尔可夫不等式的证明 四、 Bienaym–Chebyshev 不等式 4.1 简要回顾Bienaym–Chebyshev 不等式的历史 4.2 Bienaym — Chebyshev 不等式的证明 五、弱大数定律&#xff08;及其证明&#xff09;…

C语言——⾼位优先与低位优先的不同之处是什么?

一、问题 C语⾔的最⼤特⾊就是可移植性好。根据机器类型的不同&#xff0c;⾼位优先与低位优先也不同。那么&#xff0c;最好的可移植的 C 程序应该同时适⽤这两种类型的计算机。下⾯了解⼀下⾼位优先与低位优先的不同之处。 二、解答 所谓的⾼位优先&#xff0c;就是最低的地…

实现排行榜之Mysql的 OrderBy方法

排行榜之Mysql OrderBy实现 1、排行榜系统的功能点 数据收集与计算 排名规则 实时性 可视化展示 周期性更新 2、排行榜系统基本功能要素 MySQL实现方案 数据量较小&#xff0c;业务场景比较简单。可直接使用 新建表 CREATE TABLE leaderboard( id BIGINT UNSIGNED NOT …

21.Happens-Before原则

文章目录 Happens-Before原则1.Happens-Before规则介绍2.规格介绍2.1.顺序性规则(as-if-serial)2.2.volatile规则2.3.传递性规则2.4.监视锁规则2.5.start规则2.6.join()规则 Happens-Before原则 JVM内存屏障指令对Java开发工程师是透明的&#xff0c;是JMM对JVM实现的一种规范和…