风玫瑰图的绘制

这两天研究了下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)相关推荐

  1. 基于数据接口文件读取的自动轨迹绘制

    自动轨迹绘制 根据脚本来绘制图形,不是写代码而是写数据绘制轨迹 基本思路 定义数据文件格式(接口:程序和数据之间的一种规范) 编写程序,根据文件接口解析参数绘制图形 编制数据文件 数据接口定义 行进距 ...

  2. MATLAB如何生成scr文件,基于SCR脚本文件的MatlabAutoCAD结合使用

    基于SCR脚本文件的Matlab/AutoCAD结合使用 郭彩立 (重庆市勘测院,重庆 400020) 摘要本文首先结合在AutoCAD中创建图层和添加文字样式的脚本文件,分别介绍了AutoCAD中S ...

  3. 基于php下载文件的详解

    基于php下载文件的详解 本篇文章是对php下载文件进行了详细的分析介绍,需要的朋友参考下 php下载文件,比如txt文件. 出现的效果就是,弹出浏览器自带的下载框,出现另存为操作.有时候会出现内存溢 ...

  4. scp 命令 路径_基于SSH的文件传输:scp命令

    日常开发中,经常需要在服务器和本地之间进行文件传输.这里来介绍一种基于SSH的文件传输方法--scp命令 命令格式 scp(secure copy,remote file copy program), ...

  5. R语言ggplot2可视化散点图、并以与y=0为界绘制基于散点包围的多边形(ploygon)、对于y=0坐标轴的上方和下方的多边形分别使用不同的颜色进行填充

    R语言ggplot2可视化散点图.并以与y=0为界绘制基于散点包围的多边形(ploygon).对于y=0坐标轴的上方和下方的多边形分别使用不同的颜色进行填充 目录

  6. 优秀教程:创建基于 Ajax 的文件拖放上传功能

    分享来自 Tutorialzine 的优秀教程--创建基于 Ajax 的文件拖放上传功能,结合 jQuery File Upload 插件和 jQuery Knob 插件实现漂亮的 CSS3/JS 驱 ...

  7. 基于NMAP日志文件的暴力破解工具BruteSpray

    基于NMAP日志文件的暴力破解工具BruteSpray 使用NMAP的-sV选项进行扫描,可以识别目标主机的端口对应的服务.用户可以针对这些服务进行认证爆破.为了方便渗透测试人员使用,Kali Lin ...

  8. 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)

    服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (old slave) 服务器 192.168.1.4 (new slave) 您可以将另一个slave添加到现有复 ...

  9. Django,Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传

    JSON JSON指的是JavaScript对象方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON具有自我i描述,更易理解 ...

  10. oracle ebs 基于host(主机文件)并发程序的开发,Oracle EBS 基于Host(主机文件)并发程序的开发...

    您可以将程序命名为 .prog,其中 是在"可执行并发程序"窗口的"执行文件"字段中输入的值.然后,使用执行文件名(无扩展名)创建与 fndcpesr 的符号链 ...

最新文章

  1. 猪和兔子的玻璃体给人用(仅仅是个人想法)
  2. 【数据库学习】——数据库可视化--Navicat下载安装连接教程
  3. 量子是什么?为什么可以用来给通信加密?
  4. w7系统计算机里没有摄像头,win7系统没有摄像头不能视频的几种原因和解决方法...
  5. CPU Cache Line伪共享问题的总结和分析
  6. 马云行业预测:人工智能下,未来10年机器人占领职场
  7. python基础之python介绍
  8. c++ 以当前时间为文件名打印日志
  9. Bilibili 2000W用户信息爬取
  10. 针对安卓APP的 OCR图片识别技术研究与 DEMO
  11. python 机器识别_用Python端对端数据分析识别机器人“僵尸粉”
  12. 2022 年值得安装的几个 chrome/edge 扩展神器
  13. RocketMQ集群(2主2从)搭建详细步骤
  14. linux屏幕怎么暗一点,Ubuntu 12.10 调节屏幕亮度经验分享
  15. 爱可聆网络电话 v9.1 免费下载
  16. 一个超赞的智慧园区地图导航解决方案,如何实现园区路线导航?
  17. 9月13号魔兽服务器维护,魔兽世界怀旧服9月13日7点再次开放免费转服 11个转服新服务器一览...
  18. 路由nexthop下一跳blackhole属性
  19. ReactNative豆瓣电影项目
  20. 运用hadoop计算TF-IDF

热门文章

  1. swift 指定区域截图,自定义不规则图形截图
  2. ArcFace论文翻译
  3. Clock saver for Mac(博朗手表时钟屏保)
  4. 非监督分类ecognition_ENVI遥感影像土地利用分类说明
  5. Studio 3T使用教程,本人详细介绍连接Mongodb过程
  6. Linux下内存情况分析
  7. dell5580bios恢复出厂_戴尔笔记本bios如何恢复出厂设置
  8. 手写字体识别实验-Python课程设计
  9. 运用递归来画谢尔宾斯基三角形
  10. 人社部《专项职业能力证书》如何考取!含金量!证书效力!