python画箭头表示风速风向_python画风羽及风羽定义
basemap使用手册:链接:https://pan.baidu.com/s/1CUgQcsuYMbJAdCuij4WsLQ
提取码:aw16
如果想用箭头画风场,请看另一篇python matplotlib quiver——画箭头、风场
首先说下风羽是怎么回事:
当我们表示风向的时候,我们当然可以用简单的箭头指示即可,但箭头不能表示出风速的信息。为了简单而有效的表达出风的大小和方向,于是就创造了风羽——一个相对紧凑的图形(当然也许可以创造出更好地表示方法,但风羽先被广泛接受)。怎么来解读一个风羽呢?参看下图:
上图中长杆代表风向,短杆和小旗子代表风速。
短杆的朝向:设想你站在风速羽长杆上,末端是短杆所在一侧,你面对短杆,那么北半球画风羽,短杆在你的右侧,南半球画风羽,短杆则画在左侧,这是一种惯例。
国外:长杆代表风向,短杆代表风速,每个短杆为10knots,如果是半个短杆,则为5knots(1knot=1节=0.514m/s)
国内:长杆代表风向,短杆代表风速,每个短杆为4m/s,如果是半个短杆,则为2m/s。(1m/s=1.94knots)
(好吧,我认为这个换算单位很烦,英美仍然用着他们的英里什么的,在风速这里实际上是用的海里,海里的话当然为了当时的方便,现在沿用这些,感觉没必要,公制万岁!)
那测量风向的时候(我得到的数据就是一个角度),记录的就是风的来向,0°应该是正北来风,90°正东来风,以此类推。
参考:
https://baike.baidu.com/item/%E9%A3%8E%E9%80%9F%E7%BE%BD/5018668
http://weather.rap.ucar.edu/info/about_windbarb.html
其次说说python中怎么画风羽:
参考:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.barbs.html
https://www.cnblogs.com/kallan/p/6279932.html
风羽函数:
barb(X, Y, U, V,, **kw)
barbs的参数:
X:风场数据X坐标
Y:风场数据Y坐标
U:风的水平方向分量
V:风的垂直方向分量
这里水平分量和垂直分量值得商榷,就是你的角度数据所在坐标系与函数中的不一样,有时会产生结果与你的预期不正确的情况。
实操
首先看以下代码:
import matplotlib.pyplot as plt
import math
ax = plt.subplot(1,1,1)
wind = [100,100,100,100]
angle = [45, 135, 225, 315]
a = range(1,5)
b = range(1,5)
ver = [spd*math.sin(math.radians(agl)) for spd,agl in zip(wind, angle)] #vertical value
hriz = [spd*math.cos(math.radians(agl)) for spd,agl in zip(wind, angle)] #horizontal value
ax.barbs(a, b, ver, hriz)
plt.show()
得到如下结果:
这不太对,我说结果不太对,是方向的问题。根据前面对风羽的介绍,45°那里的结果是西南来风,但是45°应该是东北来风啊,所以说他错了,另外几个亦复如是。我的风向是罗盘坐标系下的角度,就是上图fig a的坐标系,函数的坐标系我没找到。改的结果也很简单,试了一下,就是将水平和垂直分量的值变成其相反数,得到预期结果:
import matplotlib.pyplot as plt
import math
ax = plt.subplot(1,1,1)
wind = [100,100,100,100]
angle = [45, 135, 225, 315]
a = range(1,5)
b = range(1,5)
ver = [-spd*math.sin(math.radians(agl)) for spd,agl in zip(wind, angle)] #vertical value
hriz = [-spd*math.cos(math.radians(agl)) for spd,agl in zip(wind, angle)] #horizontal value
ax.barbs(a, b, ver, hriz)
plt.show()
结果如下:
此外,如果您想在地图上画出风羽,借助basemap,实现代码如下:
import matplotlib.pyplot as plt
import math
from mpl_toolkits.basemap import Basemap
ax = plt.gca()
wind = [100,100,100,100]
angle = [45, 135, 225, 315]
a = [113.9, 114.1, 114.3, 114.5]
b = [22.5, 22.6, 22.7, 22.8]
m = Basemap(llcrnrlon=113.7, llcrnrlat=22.35, urcrnrlon=114.7, urcrnrlat=22.9,\
rsphere=(6378137.00,6356752.3142),\
resolution='l', area_thresh=1000., projection='lcc', lat_1=22.5, lat_0=22.5, lon_0=114,ax=ax)
#下面两行是读取地图中的shape文件,即轮廓图
m.readshapefile(r'G:\深圳季风研究\gadm36_HKG_shp\gadm36_HKG_0', 'states',color='grey') #HongKong
m.readshapefile(r'G:\深圳季风研究\gadm36_CHN_shp\gadm36_CHN_2', 'states',color='grey') #Mainland in given lon and lat
a1,b1=m(*(a,b)) #这里将经纬度坐标转化成像素点坐标
ver = [-spd*math.sin(math.radians(agl)) for spd,agl in zip(wind, angle)]
hriz = [-spd*math.cos(math.radians(agl)) for spd,agl in zip(wind, angle)]
ax.barbs(a1,b1,ver,hriz)
plt.show()
结果如下:
注意:
关于风羽的风速,ax.barbs()中当风速在(0,2.5)时,认为无风画一圆圈,在(2.5,7.5)为一短杆。
关于颜色等问题,可以自行参考官方文档或百度之
python画箭头表示风速风向_python画风羽及风羽定义相关推荐
- python能画k线图吗_python画k线图(一天的k线图怎么画)
1.大智慧软件在日线窗口的左上角标有主图的公式名称,(如ma sar bbi )等, 如果不是ma指标,请输入ma,回车.2.如果输入ma后还是没有均线,请按 f7 键,弹出 最好能举个例子的.非常感 ...
- Python知道cos值求角度_Python——画一棵漂亮的樱花树
最近用Python(大多是turtle库)绘制的樱花树有点火,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 (一) 动态生成樱花 效 ...
- python画时间序列图折线图_python画时间序列散点图
在运维管理中,经常遇到时间序列的数据,比如网卡流量.在线用户数.并发连接数,等等.用散点图可以直观的查看数据的分布情况. matplotlib模块的pyplot有画散点图的函数,但是该函数要求x轴是数 ...
- 用python画颗爱心祝生日快乐_Python画颗爱心祝生日快乐
年年有今日,岁岁有今朝,为了幸福生活和家庭和谐,我家那位每年的生日是必须要认真准备认真过的.蛋糕和生日礼物是不能少的,更重要的是我一定要陪在身边.除此之外,今年再玩上一点花样,用Python来画颗心出 ...
- python画三维立体图难吗_Python画三维图-----插值平滑数据
一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...
- python绘制不带颜色曲线图_Python画曲线图
画图方法 from matplotlib import font_manager import numpy as np import matplotlib . pyplot as plt zh_fon ...
- python循环绘制六角星_python画五角星和六角星程序
1.五角星 import turtle turtle.forward(100) turtle.right(144) turtle.forward(100) turtle.right(144) turt ...
- 图片画圈画箭头用什么软件_怎么在excel图片上画箭头 | 在excel里面怎样画圆圈里面有叉...
如何在excel表格数据上画圈 插入--特殊符号--数字序号--自己找 圆圈不是画的 可能有其它方法,等高人 用excel如何在阿拉伯数字数字上画圈 试用一下区位码.Windows 自带区位码输入法, ...
- python中箭头是什么意思_python流程框里面的箭头是什么意思
2015-05-21 回答 你用的graphics模块?这不是内置的,虽然它是调用内置的tkinter画图. option可以是"first","last",& ...
最新文章
- 基于HTML5的电信网管3D机房监控应用
- linux命令:find文件查找工具
- 安卓通过绑定开启服务 来调用服务里的方法
- windows下Python到linux运行遇到的字符编码问题
- 计算机专业录取分数及大学排名,计算机专业录取分数最高的大学有哪些?附排名前50大学名单...
- IOS应用开发版本控制工具之Versions使用,iosversions
- 当create table as select 遇上大数据
- 一个非常实用的 div+css 实现的导航条
- python turtle_Python:turtle画粽子
- python数据分析与可视化答案学堂云_学习Python编程学堂云答案
- 工业控制系统(ICS)
- 目标客户画像_数据运营实战(一):细分目标人群,结合用户画像的实践
- (1)ROS安装时Rosdep 报错解决教程
- 图的分支生成:对稀疏的无向图,在度数不等于2的节点处,将图“拆散”,输出各条分支,分别用深度优先搜索和广度优先搜索实现。
- php如何实现mac端重签ipa,越狱插件:实现自动重签,让你不再掉签的越狱插件ReProvision...
- python去除字符串中的单词_从字符串中删除特定单词的最有效方法
- redis 关闭保护模式
- 2021年美妆护肤行业电商营销报告
- 城乡规划编制资质很多地区已经开通新办了,那你知道怎么办吗?
- [译]使用MVI打造响应式APP(八):导航