matplotlib quiver绘制风向时设置等长箭头并减小箭头粗细
matplotlib风矢量调整实现方案
针对你提出的两个调整需求,可通过矢量预处理+quiver参数配置实现,不会改动原始风向:
- 统一箭头长度:对原始U/V风矢量做单位归一化处理,计算每个矢量的模长后将U、V分量分别除以对应模长,处理后所有矢量模长一致,U/V比值和原始数据完全相同,因此风向不会发生任何偏移。
- 减细箭头线条:
quiver函数的width参数直接控制箭杆的粗细,默认值约为0.005,将该值调低即可得到更细的线条,可根据显示效果在0.002~0.004区间取值。
完整修改代码
import matplotlib.pyplot as plt import numpy as np U= np.array([-2.99, -3.12, -4.18, -4.45, -3.36, -4.66, -3.93, -2.53, -4.6 , -4.71, -3.64, -2.81, -2.5 , -3.35, -3.24]) V= np.array([-6.33, -6.25, -6.54, -7.48, -6.27, -6.48, -5.69, -5.81, -8.81, -8.48, -6.86, -6.95, -5.8 , -5.9 , -4.39]) X=np.arange(0, len(U)) # 矢量归一化,统一长度且保留原始风向 mag = np.sqrt(U**2 + V**2) U_unit = U / mag V_unit = V / mag plt.figure() # width设置箭杆粗细,scale调整箭头整体显示长度,数值越小箭头越长 plt.quiver(X, 2, U_unit, V_unit, width=0.003, scale=20) plt.ylim([1.5,2.5]) plt.show()
参数微调提示
- 若箭杆仍偏粗,可继续减小
width的取值,例如设为0.002 - 若箭头显示长度不符合预期,调整
scale参数即可:参数值越大,箭头显示长度越短,反之越长 - 归一化操作仅修改矢量模长,所有箭头指向和原始代码输出的风向完全一致
内容的提问来源于stack exchange,提问作者Aristocrat
相关产品推荐
相关产品推荐

