You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib的quiver(箭头)图中设置多种不同线型?

问题原因

matplotlib.pyplot.quiver() 的 linestyle 参数不支持传入序列为每个箭头单独设置线型,仅支持全局指定统一线型,这是你原代码传参无效的核心原因。

实现方案

你可以将相同线型+颜色的箭头分组,分批调用quiver()绘制,即可实现不同箭头不同线型的需求,修正后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 定义矢量数据集
V = np.array([[-8.51111054e-01, -2.07125731e-02],
              [ 1.00514114e+00,  1.45925842e-02],
              [-9.20205414e-01, -8.90733267e-04],
              [-5.49162030e-01, -5.72392077e-04],
              [-3.20711851e-01,  1.04597686e-02],
              [ 7.85996497e-01,  1.78952999e-02]])

plt.figure()
# 按属性分组绘制:实线组对应索引0/2/4,虚线组对应索引1/3/5
solid_idx = [0,2,4]
dash_idx = [1,3,5]
color_list = ['b','b','r','r','k','k']

# 绘制实线箭头
plt.quiver(np.zeros(len(solid_idx)), np.zeros(len(solid_idx)),
           V[solid_idx,0], V[solid_idx,1], angles='xy', scale_units='xy',
           color=np.array(color_list)[solid_idx], linestyle='-', scale=1)

# 绘制虚线箭头
plt.quiver(np.zeros(len(dash_idx)), np.zeros(len(dash_idx)),
           V[dash_idx,0], V[dash_idx,1], angles='xy', scale_units='xy',
           color=np.array(color_list)[dash_idx], linestyle='--', scale=1)

# 修正原代码中未定义的b变量,改为取y分量的最值
plt.xlim(-1.5, 1.7)
plt.ylim(V[:,1].min()*1.2, V[:,1].max()*1.2)
plt.show()

如果你的箭头属性规则更复杂,也可以直接循环逐个绘制单个箭头,灵活度更高。


内容的提问来源于stack exchange,提问作者Paul Goyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:15:04