风玫瑰图的绘制,基于气象A文件(windrose)
风玫瑰图的绘制
这两天研究了下python中风玫瑰图绘制,有几种方法,比较方便的是引用windrose模块。
数据的获取,从气象A文件中获取,为计算年数据将每年A文件放入文件夹,首先放入效果图。
代码如下:
#Author:Wu Dongqiao
#2020.6.6
import os
import calendar
import datetime
import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
from windrose import WindroseAxes
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示的问题#定义读取A文件中风数据
def read_Fdata(file_path):yyyy = int(file_path[-10:][0:4])mm = int(file_path[-6:][0:2])dataline = []data = []line = []with open(file_path) as fp:# 读到文件尾再退出dates = calendar.monthrange(int(yyyy),int(mm))[1] #计算某月的天数while True:line = fp.readline()if not line:breakif line[:2] == 'FN':for i in range(4*dates):dataline = fp.readline()[:-1].split(' ')data = np.append(data,np.array(dataline), axis=0)breakreturn data#读多个A文件后拼接数据
Fdata,ws,wd=[],[],[]
for root,dirs,files in os.walk(r'D:\data\afile\2019'): #数据A文件放入文件夹的地址for tempFile in files:flag = tempFile[-17]if flag=='J':continueyyyy=int(tempFile[-10:-6])path = os.path.join(root, tempFile)print(path)tempdata=read_Fdata(path)Fdata=np.append(Fdata,tempdata,axis=0)#含缺测和静风的风向风速
wd=[i[:3] for i in Fdata]
ws=[i[3:6] for i in Fdata]#算静风率
C=np.round(wd.count('PPC')/len(wd),3)
C=str(np.round(C*100,1))+ '%'#删除数组中的缺测和静风,删除np字符串数组中非数值型数组的方法
list1=list(Fdata)
def filter_fun(x):try:return isinstance(int(x[:6]),(int))except:return False
Fdata=np.array(list(filter(filter_fun,list1)))#去掉静风和缺测后的风向风速
wd=[int(i[:3]) for i in Fdata]
ws=[int(i[3:6])/10 for i in Fdata]#画图,前面的部分都是为了提取出风向和风速的序列
ax = WindroseAxes.from_ax()
ax.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')
ax.set_legend()
title=str(yyyy)+'年风玫瑰图'
ax.set_title(title,fontsize=15,loc='center')
#ax.text(0.7,0.7,'静风频率:'+ C) #根据需要填加显示静风率
plt.savefig(str(yyyy)+'年风玫瑰图.tiff')
plt.show()
风玫瑰图的绘制,基于气象A文件(windrose)相关推荐
- 基于数据接口文件读取的自动轨迹绘制
自动轨迹绘制 根据脚本来绘制图形,不是写代码而是写数据绘制轨迹 基本思路 定义数据文件格式(接口:程序和数据之间的一种规范) 编写程序,根据文件接口解析参数绘制图形 编制数据文件 数据接口定义 行进距 ...
- MATLAB如何生成scr文件,基于SCR脚本文件的MatlabAutoCAD结合使用
基于SCR脚本文件的Matlab/AutoCAD结合使用 郭彩立 (重庆市勘测院,重庆 400020) 摘要本文首先结合在AutoCAD中创建图层和添加文字样式的脚本文件,分别介绍了AutoCAD中S ...
- 基于php下载文件的详解
基于php下载文件的详解 本篇文章是对php下载文件进行了详细的分析介绍,需要的朋友参考下 php下载文件,比如txt文件. 出现的效果就是,弹出浏览器自带的下载框,出现另存为操作.有时候会出现内存溢 ...
- scp 命令 路径_基于SSH的文件传输:scp命令
日常开发中,经常需要在服务器和本地之间进行文件传输.这里来介绍一种基于SSH的文件传输方法--scp命令 命令格式 scp(secure copy,remote file copy program), ...
- R语言ggplot2可视化散点图、并以与y=0为界绘制基于散点包围的多边形(ploygon)、对于y=0坐标轴的上方和下方的多边形分别使用不同的颜色进行填充
R语言ggplot2可视化散点图.并以与y=0为界绘制基于散点包围的多边形(ploygon).对于y=0坐标轴的上方和下方的多边形分别使用不同的颜色进行填充 目录
- 优秀教程:创建基于 Ajax 的文件拖放上传功能
分享来自 Tutorialzine 的优秀教程--创建基于 Ajax 的文件拖放上传功能,结合 jQuery File Upload 插件和 jQuery Knob 插件实现漂亮的 CSS3/JS 驱 ...
- 基于NMAP日志文件的暴力破解工具BruteSpray
基于NMAP日志文件的暴力破解工具BruteSpray 使用NMAP的-sV选项进行扫描,可以识别目标主机的端口对应的服务.用户可以针对这些服务进行认证爆破.为了方便渗透测试人员使用,Kali Lin ...
- 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (old slave) 服务器 192.168.1.4 (new slave) 您可以将另一个slave添加到现有复 ...
- Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传
JSON JSON指的是JavaScript对象方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON具有自我i描述,更易理解 ...
- oracle ebs 基于host(主机文件)并发程序的开发,Oracle EBS 基于Host(主机文件)并发程序的开发...
您可以将程序命名为 .prog,其中 是在"可执行并发程序"窗口的"执行文件"字段中输入的值.然后,使用执行文件名(无扩展名)创建与 fndcpesr 的符号链 ...
最新文章
- 猪和兔子的玻璃体给人用(仅仅是个人想法)
- 【数据库学习】——数据库可视化--Navicat下载安装连接教程
- 量子是什么?为什么可以用来给通信加密?
- w7系统计算机里没有摄像头,win7系统没有摄像头不能视频的几种原因和解决方法...
- CPU Cache Line伪共享问题的总结和分析
- 马云行业预测:人工智能下,未来10年机器人占领职场
- python基础之python介绍
- c++ 以当前时间为文件名打印日志
- Bilibili 2000W用户信息爬取
- 针对安卓APP的 OCR图片识别技术研究与 DEMO
- python 机器识别_用Python端对端数据分析识别机器人“僵尸粉”
- 2022 年值得安装的几个 chrome/edge 扩展神器
- RocketMQ集群(2主2从)搭建详细步骤
- linux屏幕怎么暗一点,Ubuntu 12.10 调节屏幕亮度经验分享
- 爱可聆网络电话 v9.1 免费下载
- 一个超赞的智慧园区地图导航解决方案,如何实现园区路线导航?
- 9月13号魔兽服务器维护,魔兽世界怀旧服9月13日7点再次开放免费转服 11个转服新服务器一览...
- 路由nexthop下一跳blackhole属性
- ReactNative豆瓣电影项目
- 运用hadoop计算TF-IDF