Python绘制箭头向量图的示例代码

 更新时间:2023年08月07日 09:43:59   作者:微小冷  
箭头向量图十分常见,比如天气预报在显示风场的时候,就会贴心地用箭头指明风的方向,下面就跟随小编一起学习一下如何利用Python绘制箭头向量图吧

简介

箭头向量图十分常见,比如天气预报在显示风场的时候,就会贴心地用箭头指明风的方向。在matplotlib中,用 quiver 函数来绘制箭头向量图,示例如下

import matplotlib.pyplot as plt
import numpy as np
X = np.arange(-2, 2, 0.2)
Y = np.arange(-1, 1, 0.2)
U, V = np.meshgrid(X, Y)
fig = plt.figure(figsize=(6,3))
plt.quiver(X, Y, U, V)
plt.tight_layout()
plt.show()

这个图需要4组变量,分别是X,Y,U,V,其中X,Y可以理解为坐标起点,U,V则是向量在X和Y方向的强度。

这个绘图函数虽然简洁,但其实有个问题,即X和Y都是一维数组,而在绘制quiver的时候,却自转换成了二维数组,否则图像上不可能有这么多的点,更不能和U,V一一对应,可见在quiver图中,U,V参数显然更重要一些。实际上也是如此,如果省略X,Y参数,那么得到的图像将建立自然计数坐标系,

fig = plt.figure(figsize=(6,3))
plt.quiver(U, V)
plt.tight_layout()
plt.show()

箭头设置

箭头向量图的特点几乎都在箭头这了,如果没有箭头,那quiver和散点图也就没什么区别了。quiver函数可以定制箭头的线宽、头宽、头长等信息,具体参数如下图所示

在具体设置时,length通过U,V参数指定,width为绝对的宽度,一般比较小,剩下三个参数均是width的倍数,是相对值。

另外,如果想给quiver图上色,需要设置C后者color参数。

具体示例如下

C = np.sqrt(U**2+V**2)
style = dict(width=0.005, headwidth=8, headlength=6, headaxislength=4)
fig = plt.figure(figsize=(6,3))
plt.quiver(X, Y, U, V, C, **style)
plt.tight_layout()
plt.show()

绘图结果如下

三维场图

quiver函数只需添加一个三维坐标就可以无缝体验三维场图。下面假设空间中有三颗恒星,那么用场图来表示这三颗恒星附近的引力指向。

万有引力公式F=Gmm/r2​,简单起见,让三颗恒星的质量都是1, G也取1,则其个方向分量可表示为

x, y, z = np.indices([5,5,5])/5
stars = np.random.rand(3, 3).reshape(-1,3)
u = v = w = 0   # 表示引力
for xi, yi, zi in stars:
    dx, dy, dz = xi-x, yi-y, zi-z
    dr = np.sqrt(dx**2+dy**2+dz**2)
    u += dx/dr**3
    v += dy/dr**3
    w += dz/dr**3
F = u**2 + v**2 + w**2
ax = plt.subplot(projection='3d')
ax.scatter(*stars.T, c='r')
style = dict(width=0.005, headwidth=8, headlength=6, headaxislength=4)
ax.quiver(x, y, z, u, v, w, length=0.1, normalize=True)
plt.tight_layout()
plt.show()

结果如下

到此这篇关于Python绘制箭头向量图的示例代码的文章就介绍到这了,更多相关Python箭头向量图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python concurrent.futures模块使用实例

    Python concurrent.futures模块使用实例

    这篇文章主要介绍了Python concurrent.futures模块使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python+Django在windows下的开发环境配置图解

    Python+Django在windows下的开发环境配置图解

    Python+Django在windows下的开发环境配置图解教程,需要的朋友可以参考下。
    2009-11-11
  • Linux 下 Python 实现按任意键退出的实现方法

    Linux 下 Python 实现按任意键退出的实现方法

    这篇文章主要介绍了Linux 下 Python 实现按任意键退出的实现方法的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • python 返回一个列表中第二大的数方法

    python 返回一个列表中第二大的数方法

    今天小编就为大家分享一篇python 返回一个列表中第二大的数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Pyinstaller打包工具的使用以及避坑

    Pyinstaller打包工具的使用以及避坑

    本文主要的是pyinstaller在windows下的基本使用和基础避坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • pandas进行数据输入和输出的方法详解

    pandas进行数据输入和输出的方法详解

    这篇文章主要为大家详细介绍了pandas进行数据输入和输出的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • python sys,os,time模块的使用(包括时间格式的各种转换)

    python sys,os,time模块的使用(包括时间格式的各种转换)

    这篇文章主要介绍了python sys,os,time模块的使用(包括时间格式的各种转换),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Python中用try-except-finally处理异常问题

    Python中用try-except-finally处理异常问题

    这篇文章主要介绍了Python中用try-except-finally处理异常问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python中property属性的用处详解

    Python中property属性的用处详解

    这篇文章主要给大家介绍了关于Python中property属性的相关资料,需简单地说就是一个类里面的方法一旦被@property装饰,就可以像调用属性一样地去调用这个方法,它能够简化调用者获取数据的流程,而且不用担心将属性暴露出来,有人对其进行赋值操作,下面要的朋友可以参考下
    2022-04-04
  • 详解Python中图像边缘检测算法的实现

    详解Python中图像边缘检测算法的实现

    这篇文章主要为大家详细介绍了python中图像边缘检测算法的原理及实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论