NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

Python matplotlib quiver—画箭头、风场、量场图

已有 12326 次阅读 2020-8-21 22:05 |个人分类:Python|系统分类:科研笔记

用像素点坐标画图

箭头关键的一个参数是长度,长度可以通过参数scale来设置,如果你多次使用quiver(),只要保证参数scale一致,那么箭头长度就会与风速的值成正比,可按照下面我贴出的代码那样设置参数。建议scale设置成30-50,100之内也都还可以。箭头宽度可以通过width=0.005开始设置。箭头颜色可以通过传入颜色列表来控制。

Axes.quiver(*args, data=None, **kw)

        用于画二维的箭头

        调用quivers有以下几种形式(signatures):

quiver(U, V, **kw)
quiver(U, V, C, **kw)
quiver(X, Y, U, V, **kw)
quiver(X, Y, U, V, C, **kw)

        U、V是箭头数据(data),X、Y是箭头的位置,C是箭头的颜色。这些参数可以是一维或二维的数组或序列。

       如果X、Y不存在(absent),他们将作为均匀网格被生成。如果U和V是2维的数组,X和Y是1维数组,并且len(X)和len(Y)与U的列(column)和行(row)纬度相匹配(match),那么X和Y将使用numpy.meshgrid()——用于产生一个矩阵,具体可参考:meshgrid使用方法——进行扩展。

       默认设置会自动将箭头的长度缩放到合理的大小。要改变箭头的长度请参看 scale 和scale_units两个关键字参数(kwargs:关键字参数,参看文章最后有关键字参数与可变参数的区别)

       默认值给出一个稍微后掠(swept-back)的箭头;若要使箭头头部呈三角状,则要确保headaxislength与headlength相同。若要使箭头更尖锐(more pointed),则应减小headwidth或者增大headlength和headaxislength。若要使箭头头部相对于箭杆(shaft)更小一些,则应将所有头部参数都减小(scale down)。你最好不要单独留下minshaft(You will probably do best to leave minshaft alone.)

线宽和边缘颜色可以用于自定义箭头轮廓(outlines)。

参数

X: 1D or 2D array, sequence, optional

   1维或2维数组,序列(sequence),可自选(optional)

   箭头位置的x坐标

Y:1D or 2D array, sequence, optional

   1维或2维数组,序列,可自选

   箭头位置的y坐标

U: 1D or 2D array or masked array, sequence

   1维或2维数组或掩码数组(参看masked array https://blog.csdn.net/liukai2918/article/details/78419302),序列

   箭头矢量的x分量

V:1D or 2D array or masked array, sequence

   1维或2维数组或掩码数组,序列

   箭头矢量的y分量

C: 1D or 2D array, sequence, optional

   1维或2维数组,序列(sequence),可自选

   箭头颜色

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)的宽度和高度的增大而增大;低于同意’dots’或’inches’。重置不会改变箭头。

angles: [‘uv’ | ‘xy’], array, 可自选

   用于决定箭头角度的方法,默认是’uv’

‘uv’:箭头的纵横比(axis aspect ratio)为1,所以若U*==*V,则绘图上箭头的方向与水平轴逆时针呈45度(正向右)。

‘xy’: 箭头从(x,y)指向(x + u,y + v)。例如,使用它来绘制渐变场(gradient field)。

或者,可以将任意角度指定为以水平轴逆时针方向的度数值的数组。

注意:反转数据轴将相应地仅使用angles='xy'反转箭头。

scale : None, float, optional

   每个箭头长度单位的数据单位数量,例如,每个绘图宽度m / s;参数scale越小箭头越长。默认是None

   若是None,一个简单的自动缩放算法将被采用,基于平均矢量长度和适量的数量。箭头长度单位由scale_units参数给出。

scale_units : [ 'width' | 'height' | 'dots' | 'inches' | 'x' | 'y' | 'xy' ], None, optional

   如果关键字参数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倍的画的宽度(width of the plot)

headwidth : scalar, optional

   头部宽度相对于箭杆宽度的倍数,默认是3倍

headlength : scalar, optional

   轴交叉处的头部长度,默认是4.5

minshaft : scalar, optional

   箭头比例的长度,以头部长度为单位。不要将其设置为小于1,否则小箭头看起来会很糟糕

minlength : scalar, optional

   最小长度为轴宽的倍数;如果箭头长度小于此值,则绘制该直径的点(六边形)。默认值为1

pivot : [ 'tail' | 'mid' | 'middle' | 'tip' ], optional

   箭头在网格点上的部分;箭头围绕这一点旋转,因此称为枢轴。

color : [ color | color sequence ], optional

   这是PolyCollection facecolor kwarg的同义词。如果设置了C,颜色就没有效果。

image.pngimage.png

用经纬度坐标画图(推荐)

quiver(*args, **kw)

*args, **kw分别是可变参数和关键字参数,参考此文总结如下:

image.png

【参考】

https://blog.csdn.net/liuchengzimozigreat/article/details/84566650 (好博文,推荐详细阅读)

点滴分享,福泽你我!Add oil!



https://blog.sciencenet.cn/blog-3428464-1247355.html

上一篇:Python中的size,shape,len,count与Numpy中ndim、dtype、astype
下一篇:Python绘图matplotlib--plt
收藏 IP: 211.162.81.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-25 23:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部