笔记:绘图进阶

主要功能:

  1. 双坐标轴
  2. 多子图共用一个横坐标
  3. 横坐标时间刻度设置(简便方法)
  4. 自定义时间坐标轴起止时间
# -*- coding: utf-8 -*-import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdatesif __name__ == '__main__':# 风速data_df = pd.read_excel(r'G:\20231021\3\data.xlsx', sheet_name='风', na_values=['VRB', 'C'])data_arr = np.array(data_df)wind_d = data_arr[:, range(0, 48, 2)].flatten()wind_v = data_arr[:, range(1, 48, 2)].flatten()# 气温data_df = pd.read_excel(r'G:\20231021\3\data.xlsx', sheet_name='气温', header=None)t_arr = np.array(data_df).flatten()# 露点温度data_df = pd.read_excel(r'G:\20231021\3\data.xlsx', sheet_name='露点温度', header=None)dewt_arr = np.array(data_df).flatten()# 能见度data_df = pd.read_excel(r'G:\20231021\3\data.xlsx', sheet_name='能见度', header=None)vis_arr = np.array(data_df).flatten()# 气压data_df = pd.read_excel(r'G:\20231021\3\data.xlsx', sheet_name='气压', header=None)p_arr = np.array(data_df).flatten()# 画图x = pd.date_range(start='201711020100', end='201712020000', freq='H')  # 生成时间序列(基于原始世界时转为北京时)# 创建一个包含4个子图的画布fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=4, ncols=1, figsize=(8, 10), sharex=True)# 在第一个子图上画图ax1.plot(x, wind_v, 'b')ax1.set_ylabel('wind/(m/s)')# 创建第一个子图的右侧纵坐标轴ax1_right = ax1.twinx()ax1_right.plot(x, vis_arr, 'r')  # 替换 wind_v_right 为您的右侧纵坐标数据ax1_right.set_ylabel('vis/(m)')  # 或者您想要的任何右侧纵坐标标签# 在第二个子图上画图ax2.plot(x, t_arr, 'b')ax2.set_ylabel('t(℃)')# 创建第2个子图的右侧纵坐标轴ax2_right = ax2.twinx()ax2_right.plot(x, vis_arr, 'r')  # 替换 wind_v_right 为您的右侧纵坐标数据ax2_right.set_ylabel('vis/(m)')  # 或者您想要的任何右侧纵坐标标签# 在第三个子图上画图ax3.plot(x, t_arr - dewt_arr, 'b')ax3.set_ylabel('t-td/(℃)')# 创建第3个子图的右侧纵坐标轴ax3_right = ax3.twinx()ax3_right.plot(x, vis_arr, 'r')  # 替换 wind_v_right 为您的右侧纵坐标数据ax3_right.set_ylabel('vis/(m)')  # 或者您想要的任何右侧纵坐标标签# 在第4个子图上画图ax4.plot(x, p_arr, 'b')ax4.set_ylabel('P/(0.1hPa)')ax4.set_xlabel('Time')# 创建第4个子图的右侧纵坐标轴ax4_right = ax4.twinx()ax4_right.plot(x, vis_arr, 'r')  # 替换 wind_v_right 为您的右侧纵坐标数据ax4_right.set_ylabel('vis/(m)')  # 或者您想要的任何右侧纵坐标标签ax4.set_xlim([mdates.date2num(np.datetime64('2017-11-19 21:00:00')),mdates.date2num(np.datetime64('2017-11-21 04:00:00'))])ax4.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))  # 设置x轴标签的格式为日期时间格式ax4.xaxis.set_major_locator(mdates.HourLocator())  # 设置x轴标签的间隔为每天一个标签ax4.tick_params(axis='x', rotation=90)  # 旋转x轴标签90度# 显示画布plt.tight_layout()  # 自动调整子图间距,以适应子图大小和位置的变化plt.show()

在这里插入图片描述

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

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

相关文章

小程序跨页面传递参数的几种方式

当我们在开发小程序时,经常会遇到需要在不同页面之间传递数据的情况。为了实现页面间的数据传递,小程序提供了多种方法。下面将介绍几种常用的传递数据的方法。 URL参数传递:这是一种简单直接的传递数据的方式。在跳转页面时,可以…

为什么每个跳表结点的层高都是1至32之间的随机数?

跳表节点的层高通常是一个随机数或者根据概率分布得到的值,这是为了提高跳表的性能和均衡性。以下是关于为什么这么设计的一些解释: 均衡性: 使用随机层高可以使跳表中的节点分布更加均匀,减少了极端情况下跳表的高度。如果每个节…

网站技术查看

当打开一个网页感觉很好奇,他使用了什么框架和什么技术? 常用的网页技术分析网站。 1. w3techs Check web technologies used by a website - Site InfoW3Techs identifies which web technologies such as CMS, programming language, web server an…

​CUDA学习笔记(四)device管理

本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/,仅用于学习。 device管理 NVIDIA提供了集中凡是来查询和管理GPU device,掌握GPU信息查询很重要,因为这可以帮助你设置kernel的执行配置。 本博文将主要介绍下面两方面内容&…

Linux的shell(极其粗糙版)

Shell脚本: 脚本主要是为了业务,辅助人工,实现自动化运维 Shell:介于用户和内核之间,充当翻译官的作用,当用户执行相关的命令,shell会把指令二进制传给内核,内核处理完毕以后通过shell把内核的…

算法学习之 背包01问题 , 备战leecode

来看题目 我们分析一下题目&#xff0c;首先我们要排序&#xff0c;这有助于我们得到最大的值&#xff0c;我们要得到一个递推公式 代码如下: class Solution { public:int maxSatisfaction(vector<int>& satisfaction) {int n satisfaction.size();vector<v…

2023-10-19 node.js-将异步处理修改为同步-使用Promise和async-记录

摘要: 2023-10-19 node.js-将异步处理修改为同步-使用Promise和async-记录 使用promise和async将异步修改为同步: const fs require(fs);f1 function() {return new Promise(resolve > {fs.readFile(f1.txt, utf8, (err, data) > {if (err) reject(err);else resolve(…

flutter开发实战-安卓apk安装、卸载、启动实现

flutter开发实战-安卓apk安装、卸载、启动实现 在之前的文章中&#xff0c;实现了应用更新apk下载等操作&#xff0c;具体文档看下 这里记录一下使用shell来操作apk的安装、卸载、启动的操作。用到了库shell&#xff0c;Shell用于在Dart中或在代表其他用户执行系统管理任务的…

计算几何相关笔记

距离 欧拉距离 就是我们最熟悉的两点之间距离公式&#xff1a; d ( x 1 − x 2 ) 2 ( y 1 − y 2 ) 2 d\sqrt{(x_1-x_2)^2(y_1-y_2)^2} d(x1​−x2​)2(y1​−y2​)2 ​ 曼哈顿距离 相对于欧拉距离&#xff0c;曼哈顿距离的计算更加简单&#xff0c;并且没有开方过程&…

微软官方推出的四款工具,太实用了,值得收藏

目录 一、Officeplus——丰富的办公资源库 二、微软数学求解器 三、微软内置edge浏览器 四、Microsoft To-Do 办公待办神器 所以今天小编给大家分享4个微软官方推出的实用工具&#xff0c;每一个都非常好用&#xff0c;对于大家日常办公&#xff0c;非常有必要&#xff0c;感兴…

maven-plugin-shade 详解

一、介绍 [1] This plugin provides the capability to package the artifact in an uber-jar, including its dependencies and to shade - i.e. rename - the packages of some of the dependencies. maven-plugin-shade 插件提供了两个能力&#xff1a; 把整个项目&#xf…

C语言--冒泡排序和简答选择排序

冒泡排序 一种典型的交换排序 类似水冒泡&#xff0c;大元素经不断的交换由水底慢慢的浮出 从头到尾&#xff0c;循环比较两相邻的元素 大的元素移到后面&#xff0c;小的放前面-每次循环&#xff0c;大的元素会排到最后 代码如下&#xff1a; #include<stdio.h> …

js 删除树状图无用数据,如果子级没有数据则删除

有一个需求&#xff0c;当你从后端拿到一个树状图的时候&#xff0c;有些子级没数据&#xff0c;这时就需要我们处理一下数据&#xff0c;当然了&#xff0c;如果第一层底下的第二层没数据&#xff0c;第二层底下的所有都没数据&#xff0c;那这一层都不需要。 我的写法&#x…

常用消息中间件

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

程序连接oracle查询数据的环境配置

连接oracle 数据库真麻烦&#xff0c;还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的&#xff0c;引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…

R语言的计量经济学技术

量经济学通常使用较小样本&#xff0c;但这种区别日渐模糊&#xff0c;机器学习在经济学领域、特别是经济学与其它学科的交叉领域表现日益突出&#xff0c;R语言是用于统计建模的主流计算机语言&#xff0c;在本次培训中&#xff0c;我们将从实际应用出发&#xff0c;重点从数据…

ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test

1. 简介 [RK3588从入门到精通] 专栏总目录 mpi_dec_test 是rockchip官方解码 demo 本篇文章进行mpi_dec_test 的代码解析&#xff0c;解码流程解析 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板 软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 3.…

失配树学习笔记

失配树&#xff0c;是一种奇妙的数据结构&#xff0c;它利用 KMP、LCA 解决求两前缀的最长公共 Border 的问题。 首先介绍一下什么是 Border&#xff0c;我们知道 nxt 数组是前后缀相同的最大长度&#xff0c;Border 相当于是 nxt 数组的弱化版&#xff0c;只是去掉了“最大”…

[TCP1P 2023] 部分crypto,pwn,reverse

Crypto Final Consensus 这是个AES爆破密钥的题&#xff0c;加密方法是先后用两个密钥加密。远程先给出加密后的flag&#xff0c;然后允许输入值并进行加密。 from Crypto.Cipher import AES import random from Crypto.Util.Padding import pada b"" b b"&…