随着时间的推移,我有一个包含风量和风向的阵列。我想在同一图表上绘制它们,在中间显示带有线和风向的风量作为矢量(或风倒钩)。我以前用其他绘图软件做过这个,但这次我需要在matplotlib中做。
以下是使用风倒钩所需图表的参考资料
答案 0 :(得分:1)
我调整了 igrolvr 的答案,我认为看起来很漂亮
obs_times = pd.to_datetime(debertWeatherStation['Date/Time (LST)'])
wind_speed = debertWeatherStation['Wind Spd (km/h)']
wind_direction = debertWeatherStation['Wind Dir (10s deg)']*10.0
plt.figure(figsize=(14,8))
ax1 = plt.subplot(2, 1, 1)
plt.plot(obs_times,wind_speed,'-b',alpha=0.6)
plt.setp(ax1.get_xticklabels(), visible=False)
plt.grid()
plt.title("Wind Speed")
ax2 = plt.subplot(2, 1, 2,sharex=ax1)
arrow_scaler = 1
colors = plt.cm.jet(np.linspace(wind_speed.min(),wind_speed.max(), len(wind_speed)))
for i in range(0,len(obs_times),1):
u = arrow_scaler*-1*np.sin((np.pi/180)*(wind_direction[i]))
v = arrow_scaler*-1*np.cos((np.pi/180)*(wind_direction[i]))
ax2.arrow(obs_times[i], 0, u, v, fc=colors[int(wind_speed[i])], ec='k',
head_width=0.2, head_length=0.5, width=0.2, length_includes_head=True,
alpha=0.6)
plt.ylim(-1.5,1.5)
plt.grid()
plt.title("Wind Direction")
答案 1 :(得分:0)
我相信quiver - as 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()
给出了这个结果
答案 2 :(得分:0)
我设法使用matplotlib的arrow
功能进行绘图。棘手的部分是我的风向是气象常规(0˚= N,90˚= E,180˚= S,270˚= W),所以我需要计算u
和{{1}相应的组件。
v
,obs_times
和wind_speed
是包含观察时间和风数据的数组,绘图代码如下:
wind_direction
这给出了输出(是的,我的数据很吵,很好):