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画风羽及风羽定义相关推荐

  1. python能画k线图吗_python画k线图(一天的k线图怎么画)

    1.大智慧软件在日线窗口的左上角标有主图的公式名称,(如ma sar bbi )等, 如果不是ma指标,请输入ma,回车.2.如果输入ma后还是没有均线,请按 f7 键,弹出 最好能举个例子的.非常感 ...

  2. Python知道cos值求角度_Python——画一棵漂亮的樱花树

    最近用Python(大多是turtle库)绘制的樱花树有点火,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 (一) 动态生成樱花 效 ...

  3. python画时间序列图折线图_python画时间序列散点图

    在运维管理中,经常遇到时间序列的数据,比如网卡流量.在线用户数.并发连接数,等等.用散点图可以直观的查看数据的分布情况. matplotlib模块的pyplot有画散点图的函数,但是该函数要求x轴是数 ...

  4. 用python画颗爱心祝生日快乐_Python画颗爱心祝生日快乐

    年年有今日,岁岁有今朝,为了幸福生活和家庭和谐,我家那位每年的生日是必须要认真准备认真过的.蛋糕和生日礼物是不能少的,更重要的是我一定要陪在身边.除此之外,今年再玩上一点花样,用Python来画颗心出 ...

  5. python画三维立体图难吗_Python画三维图-----插值平滑数据

    一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...

  6. python绘制不带颜色曲线图_Python画曲线图

    画图方法 from matplotlib import font_manager import numpy as np import matplotlib . pyplot as plt zh_fon ...

  7. python循环绘制六角星_python画五角星和六角星程序

    1.五角星 import turtle turtle.forward(100) turtle.right(144) turtle.forward(100) turtle.right(144) turt ...

  8. 图片画圈画箭头用什么软件_怎么在excel图片上画箭头 | 在excel里面怎样画圆圈里面有叉...

    如何在excel表格数据上画圈 插入--特殊符号--数字序号--自己找 圆圈不是画的 可能有其它方法,等高人 用excel如何在阿拉伯数字数字上画圈 试用一下区位码.Windows 自带区位码输入法, ...

  9. python中箭头是什么意思_python流程框里面的箭头是什么意思

    2015-05-21 回答 你用的graphics模块?这不是内置的,虽然它是调用内置的tkinter画图. option可以是"first","last",& ...

最新文章

  1. 基于HTML5的电信网管3D机房监控应用
  2. linux命令:find文件查找工具
  3. 安卓通过绑定开启服务 来调用服务里的方法
  4. windows下Python到linux运行遇到的字符编码问题
  5. 计算机专业录取分数及大学排名,计算机专业录取分数最高的大学有哪些?附排名前50大学名单...
  6. IOS应用开发版本控制工具之Versions使用,iosversions
  7. 当create table as select 遇上大数据
  8. 一个非常实用的 div+css 实现的导航条
  9. python turtle_Python:turtle画粽子
  10. python数据分析与可视化答案学堂云_学习Python编程学堂云答案
  11. 工业控制系统(ICS)
  12. 目标客户画像_数据运营实战(一):细分目标人群,结合用户画像的实践
  13. (1)ROS安装时Rosdep 报错解决教程
  14. 图的分支生成:对稀疏的无向图,在度数不等于2的节点处,将图“拆散”,输出各条分支,分别用深度优先搜索和广度优先搜索实现。
  15. php如何实现mac端重签ipa,越狱插件:实现自动重签,让你不再掉签的越狱插件ReProvision...
  16. python去除字符串中的单词_从字符串中删除特定单词的最有效方法
  17. redis 关闭保护模式
  18. 2021年美妆护肤行业电商营销报告
  19. 城乡规划编制资质很多地区已经开通新办了,那你知道怎么办吗?
  20. [译]使用MVI打造响应式APP(八):导航

热门文章

  1. find命令 文件名后缀
  2. FineUI(专业版)v3.1发布(ASP.NET控件库)!
  3. 为centos5.5添加axel插件
  4. oracle 数据库由Linux平台向Windows平台迁移
  5. RTOS原理与实现12:性能测量
  6. 【HISI系列】之H264/H265/JPEG切帧方法
  7. 计算机网络配置虚拟ip,好不好在电脑中设置虚拟IP地址?
  8. Wireshark-003过滤器
  9. Linux(3) 用户管理
  10. java 内存情况_Java代码中获取运行时内存情况