使用matplotlib在1D图表中绘制风矢量(或风倒钩)

2024-04-30 02:08:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组,包含一段时间内给定点的风力大小和风向。我想把它们都绘制在同一张图上,以直线和风向显示风的大小,作为中间的矢量(或风钩)。我以前用其他绘图软件做过,但这次我需要在matplotlib中做。在

下面是一个参考图所需,使用风倒钩

reference plot


Tags: 绘图软件matplotlib矢量绘制数组直线定点
2条回答

我相信quiveras in this example适合你的情况。 你只需要定义向量,而不是矩阵。 遵循示例代码:

import matplotlib.pyplot as plt
import numpy as np
from numpy import ma

X=np.arange(0, 2 * np.pi, .2)
Y=np.ones(X.shape)
U= np.cos(X)
V= np.sin(X)
plt.figure()
plt.plot(X,X,' ')
Q = plt.quiver(X, Y, Y, Y, units='width') 
Q = plt.quiver(X, Y-2, U, V, units='width')
plt.show()

这就产生了这个结果

Quivers

我设法使用matplotlib的arrow功能进行绘图。棘手的是,我的风向是按照气象惯例(0˚=N,90˚=E,180˚=S,270˚=W),所以我需要相应地计算u和{}分量。在

obs_timeswind_speed和{}是我的数组,包含观测时间和风数据,绘图代码如下:

fig, ax = plt.subplots(1, 1,figsize=(18, 4))
ax.plot(obs_times, wind_speed, linewidth=2, color='blue')
arrow_scaler = 3
for i in xrange(0,len(obs_times),4):
    u = arrow_scaler*-1*np.sin((np.pi/180)*(wind_direction[i]))
    v = arrow_scaler*-1*np.cos((np.pi/180)*(wind_direction[i]))
    ax.arrow(obs_times[i], (wind_speed.max()+2)/2, u, v, fc='k', ec='k', head_width=0.4, head_length=0.6)

这给出了输出(是的,我的数据有噪声,没关系):

output

相关问题 更多 >