Matplotlib绘制多箭头时如何配置关联数值的颜色条
matplotlib多箭头统一颜色映射加颜色条实现
原代码问题
原代码循环逐次调用plt.quiver()绘制单根箭头,每次调用都会生成独立的颜色映射范围,单根箭头的数值会被当作独立数据集计算颜色,既无法实现多箭头统一按数值分配颜色,也无法生成全局匹配的颜色条。
修正代码
import matplotlib.pyplot as plt I6 = [ [(0.5, -0.5), (1.0, 0.0),10], [(0.5, -0.5), (0.0, -1.0),20], [(1.5, -0.5), (0.0, -1.0),30], [(0.5, -1.5), (1.0, 0.0),40] ] # 拆分所有箭头的坐标、偏移、对应数值为独立数组 x = [] y = [] dx = [] dy = [] val = [] for item in I6: (px, py), (ddx, ddy), v = item x.append(px) y.append(py) dx.append(ddx) dy.append(ddy) val.append(v) # 一次性传入所有箭头参数,共用同一套颜色映射规则 quiver_plot = plt.quiver( x, y, dx, dy, val, scale=1, units="xy", scale_units="xy", cmap="viridis" # 可根据需求替换为其他matplotlib内置色卡 ) # 绑定颜色条 plt.colorbar(quiver_plot, label="映射数值") # 调整坐标轴参数避免箭头截断、方向畸变 plt.xlim(0, 2.5) plt.ylim(-2.5, 0.5) plt.gca().set_aspect("equal") plt.show()
关键修改点
- 不再循环单根调用
quiver,将所有箭头参数汇总后一次性传入,保证所有箭头共用统一的数值-颜色映射规则 - 捕获
quiver返回的绘图对象传入colorbar,保证颜色条的色阶和箭头颜色完全对应 - 补充坐标轴范围、等比例设置,避免箭头显示不全、方向拉伸变形
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

