python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)
最近在计算波作用通量,正好就画到了矢量箭头图,画的过程中发现还是有很多细节需要注意的,那就直接进入正题吧。
首先,矢量箭头图是分为两种的,一种类似我们常见的风场(左图),另一种则是特殊的流场,也就是流线图(右图),这两张都是画的Plumb通量,显然对于波通量来说还是箭头好一些。
矢量箭头
对于左图和右图来说分别使用的画图函数为:
quiver([X, Y], U, V, [C], **kw)
和
streamplot([X, Y], U, V, [C], **kw)
我整理了相应的参数:
1. quiver
X: 数组,
为X坐标,通常为我们的经度lon
Y:
为Y坐标,通常为我们的纬度lat
U:
纬向风分量,二维数组
V:
经向风分量,二维数组
C:
箭头颜色数组,可为一种颜色,也可为颜色数组
units(单位): [ 'width' | 'height' | 'dots' | 'inches' | 'x' | 'y' | 'xy' ]
箭头尺寸(除长度外)以此单位的倍数计算——即是说选定单位后,箭头尺寸即是此单位的倍数
‘width’或’height’:轴(axis)的宽度或高度
‘dots’或’inches’:像素或英寸,基于图的dpi
‘x’, ‘y’或‘xy’:分别是X、Y或X2+Y2的数据单位(data units)
箭头依单位不同而不同。对于’x’或’y’,箭头会随着其一的增大(zoom in)而增大;对于其他单位,箭头的大小与缩放状态(zoom state)无关。对于’width’或’height’,当窗口重置时,箭头的大小会随着轴(axes)的宽度和高度的增大而增大
angles: [‘uv’ | ‘xy’]
用于决定箭头角度的方法,默认是’uv’
‘uv’:箭头的纵横比(axis aspect ratio)为1,所以若U==V,则绘图上箭头的方向与水平轴逆时针呈45度(正向右)。
‘xy’: 箭头从(x,y)指向(x + u,y + v)。例如,使用它来绘制渐变场(gradient field)。
或者,可以将任意角度指定为以水平轴逆时针方向的度数值的数组。
注意:反转数据轴将相应地仅使用angles='xy'反转箭头。
scale :
每个箭头长度单位的数据单位数量,例如,每个绘图宽度m / s;参数scale越小箭头越长。默认是None
若是None,一个简单的自动缩放算法将被采用,基于平均矢量长度和适量的数量。箭头长度单位由scale_units参数给出。
scale_units : [ 'width' | 'height' | 'dots' | 'inches' | 'x' | 'y' | 'xy' ]
如果关键字参数scale是None,那么箭头长度单位默认是None
例如:scale_units是’inches’,scale是2.0,(u,v)=(1,0),那么矢量将会是0.5英寸长。
如果scale_units是’width/height’,那么矢量长度是轴’width/height’的半长
如果scale_units是’x’那么矢量是x轴单位的0.5倍。要在x-y平面上画矢量,使得u和v与x和y有相同的单位,则应另angles=’xy’, scale_units’xy’, scale=1.
width : scalar(标量), optional
箭头杆(shaft)的宽度,以箭头单位衡量。常用的初始值是0.005倍的画的宽度
headwidth :
头部宽度相对于箭杆宽度的倍数,默认是3倍
headlength :
轴交叉处的头部长度,默认是4.5
minshaft :
箭头比例的长度,以头部长度为单位。
minlength :
最小长度为轴宽的倍数;如果箭头长度小于此值,则绘制该直径的点(六边形)。
pivot : [ 'tail' | 'mid' | 'middle' | 'tip' ], optional
箭头的基点,比如说选择mid,那个箭头中间位置就是所在坐标点位置。
老实说,关于units,scale,和scale_units的设置十分复杂,画图时可先均不设置,看看默认效果,然后逐渐调整。通常只调整scale即可,另外两项除非必要,均可不设置。
2. streamplot
略过相同部分
density : float
控制流线的闭合度。当密度为1时,将域划分为30x30网格。密度线性缩放此网格。网格中的每个单元格最多只能有一条横贯流线。对于每个方向上的不同密度,使用一个元组(密度x,密度y)。
linewidth : float or 2D array
流线的宽度。使用二维数组,可以在网格上改变线宽。数组的形状必须与u和v相同。
color:matplotlib颜色代码或二维数组
流线型的颜色。如果给定一个数组,则使用cmap和norm将其值转换为颜色。数组的形状必须与u和v相同。
cmap:颜色映射
用于绘制流线和箭头的彩色地图。这只在颜色是数组时使用。
norm:
规格化用于将亮度数据缩放到0,1的对象。如果没有,则拉伸(最小,最大)到(0,1)。这只在颜色是数组时使用。
arrowsize:float
箭头大小的比例因子。
minlength:浮动
轴线坐标中流线的最小长度。
start_points :
数据坐标中流线起点的坐标(与x和y数组的坐标相同)。
maxlength:浮点
轴线坐标中流线的最大长度。
integration_direction:{'forward','backward','both'}
将流线向前、向后或双向整合。默认值为“both”。
以上便是常用参数,仍有一些参数是可以使用的,比如说zorder(图层顺序),transform(坐标转换)等等。需要注意的是,当我们在地图投影上叠加风场时,需要设置transform=ccrs.PlateCarree() 来将坐标转换为圆柱地图投影坐标,该参数调用了cartopy库的函数,具体使用可参考我先前发布的文章,有关于地图投影的详细描写。
那么,再回到我们最开始展示的那张图,我给出该图的部分代码以供参考。
#以下四行为地图投影以及坐标轴的设置,具体参考先前发布的文章
proj = ccrs.PlateCarree(central_longitude=50)
leftlon, rightlon, lowerlat, upperlat = (0,180,0,90)
img_extent = [leftlon, rightlon, lowerlat, upperlat]
lon_formatter = cticker.LongitudeFormatter()
lat_formatter = cticker.LatitudeFormatter()
#创建画布
fig7 = plt.figure(figsize=(12,8))
#创建地图投影子图
f7_ax1 = fig7.add_axes([0.1, 0.1, 0.6, 0.6],projection = proj)
#地图相关设置,包括边界,河流,海岸线,坐标的经纬度显示
f7_ax1.set_extent([leftlon, rightlon, lowerlat, upperlat], crs=ccrs.PlateCarree())
f7_ax1.add_feature(cfeature.COASTLINE.with_scale('50m'))
f7_ax1.add_feature(cfeature.LAKES, alpha=0.5)
f7_ax1.set_xticks(np.arange(leftlon,rightlon+10,10), crs=ccrs.PlateCarree())
f7_ax1.set_yticks(np.arange(lowerlat,upperlat+10,10), crs=ccrs.PlateCarree())
f7_ax1.xaxis.set_major_formatter(lon_formatter)
f7_ax1.yaxis.set_major_formatter(lat_formatter)
f7_ax1.set_title('(a) quiver',loc='left')
#因为是波作用通量,首先画扰动流函数
cf=f7_ax1.contourf(lon,lat,streamf_mean/1e5,cmap='RdBu_r',extend='both',levels=np.arange(-16,18,2),transform=ccrs.PlateCarree())
c=f7_ax1.contour(lon,lat,streamf_mean/1e5,colors='black',linewidths=0.5,levels=np.arange(-16,18,2),transform=ccrs.PlateCarree())
#画矢量箭头核心代码在这里,::2表示每隔2个点画箭头,不然会太密集,记得在投影坐标上画时一定要设置transform
Q = f7_ax1.quiver(lon[::2], lat[::2], px_mean[::2,::2], py_mean[::2,::2],pivot='mid',width=0.0018,scale=10,headwidth=4,transform=ccrs.PlateCarree())
#添加色标
position=fig7.add_axes([0.57, 0.08, 0.35, 0.025])
fig7.colorbar(cf,cax=position,orientation='horizontal',format='%d',)
右半图的代码就不展示了,唯一区别就是quiver变成了streamplot,我没有过多修改。
python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)相关推荐
- python气象绘图速成_Python气象绘图Day-By-Day
登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 edwardli 于 2017-6-13 10:02 编辑 工作繁事多,先上结果供交流,回头不断细化. 我 ...
- python气象绘图速成_Python气象绘图教程(十六)—Cartopy_6
本节提要:使用cartopy进行市县的色块填色.模仿geopandas绘制颜色图 一.利用cartopy进行市县的色块填色 其实geopandas在这方面比cartopy更加专业,由于是基于panda ...
- python处理wrf气象数据_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)...
最近在计算波作用通量,正好就画到了矢量箭头图,画的过程中发现还是有很多细节需要注意的,那就直接进入正题吧. 首先,矢量箭头图是分为两种的,一种类似我们常见的风场(左图),另一种则是特殊的流场,也就是流 ...
- python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...
一. 使用NCL色板(使用调色盘文件思路相同) NCL的色板十分丰富,几乎可以涵盖平常所需.详见:传送门 那么我们能否将NCL的色板用在python中呢?答案当然是可以的. 我在气象家园发现了个帖子, ...
- Python 柱状图 横坐标 名字_Python气象绘图教程(四)
本节提要:回顾复习,新的调整命令. 一.回顾复习 前面讲到Python库包的下载与安装,推荐使用conda命令进行安装,通过conda list查看当前已经安装好的库包及版本. 画图步骤:①impor ...
- python 3d绘图库_python – 用于科学3d绘图的Mayavi的替代品
在没有令人满意的第一个答案和无法解释的downvote之后编辑: 我需要绘制一个在3D网格中构造的标量字段,如下所示: import numpy as np from mayavi import ml ...
- python三维图形注释_Python数据分析注释matplolib绘图注释和示例,笔记,及
先记录小技巧: pycharm中,鼠标点在一个方法上,ctrl+b,即转到该方法的源码,以找到使用方法. 概念及环境 使用意义 :从一堆数据中找到或总结出需要的信息,帮助判断和决策 与web.爬虫.机 ...
- python三天速成_python学习第三天
append和extend的区别 extend可以将另一个集合中的元素逐一添加到列表中 append向列表添加元素,将元素整体添加进去列表 append添加的注意事项 a=a.append(b)画蛇添 ...
- python人文社科研究_Python高级数据处理与可视化(五)---- Python的理工类应用 Python人文社科类应用...
6. Python的理工类应用 6.1 简单的三角函数计算 np.sin(x) 6.2 一组数据的傅立叶变换 #-*- coding: utf-8 -*- """Crea ...
最新文章
- 网页(Webpage)粒度分析算法
- Android软键盘调用及隐藏,以及获得点击软键盘输入的字母信息
- BootstrapValidator验证
- JS Compress and Decompress
- 推荐系统图算法实用干货汇总(含论文、代码、样例教程)
- Axiom3D:Ogre射线与点,线,面相交,鼠标操作3维空间.
- ORB_SLAM : semi dense code
- gitd mysql_MySQL GTID (一)
- mysql 未发现数据源名称并且未指定默认驱动程序_SQLSERVER 链接 MYSQL 的 两种方法 及 未发现数据源名称并且未指定默认驱动程序 处理办法...
- 极客大学架构师训练营--食堂就餐系统架构设计⽂档 -- 第一次作业
- jQuery 文档碎片处理
- 高斯09linux教程,Gaussian 09的安装与使用
- Redis 实战案例总结
- 2022年忍者必须死3到达无双纪念
- mapping文件的编写
- CTOlib码库介绍(GitHub热门项目收录网站)
- Flask前后端分离02
- 0001-Flink安装---Flink安装(Standlone模式)
- ZYNQ7000系列入门之GPIO点灯
- 编程的本质(极客时间 | 陈皓《左耳听风:编程范式游记》系列的其中一篇)
热门文章
- 论文审稿怎么审?审稿意见怎么写?(含案例)
- [ITIL]-ITIL4架构
- (基于Packet Tracer 的校园网络设计方案(计算机网络与课程实验)(三)——Run Time 观察报文传输过程
- VS2008 MFC类库精讲:使用MFC V9.0类库及新版Office Fluent UI实现CAD系统
- 如何去掉PDF的密码?这几个方法轻松搞定
- Mac上如何安装Mysql5以及可视化工具navicat
- 第一个用pr和au制作出的作品
- 使用TensorFlow的卷积神经网络识别手写数字(3)-识别篇
- 【CSDN竞赛第25期】赢热门图书《千脑智能》和定制周边
- ubuntu18.04安装无线网卡驱动安装心得(解决无法在线下载驱动问题)