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

使用matplotlib quiver绘图时报list不支持减法运算TypeError

报错原因

Python 原生列表类型不支持直接通过-运算符做逐元素相减操作,你代码中计算坐标差的x[1:] - x[:-1]、y[1:] - y[:-1]两侧均为列表切片(属于list类型),因此触发类型错误。
你的核心逻辑是计算每条折线相邻点的坐标偏移量,作为plt.quiver绘制箭头的参数,两种可直接落地的修复方式如下:

修复方案

方案1:纯Python原生实现(无额外依赖)

通过两层列表推导,逐位计算相邻元素差值,直接替换原代码中计算deltaX、deltaY的两行即可:

deltaX1, deltaX2, deltaX3, deltaX4 = [
    [next_p - prev_p for next_p, prev_p in zip(seq[1:], seq[:-1])]
    for seq in [x1, x2, x3, x4]
]
deltaY1, deltaY2, deltaY3, deltaY4 = [
    [next_p - prev_p for next_p, prev_p in zip(seq[1:], seq[:-1])]
    for seq in [y1, y2, y3, y4]
]

方案2:使用numpy实现(代码更简洁,适配matplotlib生态)

matplotlib 本身依赖numpy库,numpy数组原生支持逐元素算术运算,代码更简洁:

  • 首先在文件开头导入numpy:
    import numpy as np
    
  • 替换原delta计算逻辑为:
    deltaX1, deltaX2, deltaX3, deltaX4 = [np.array(seq)[1:] - np.array(seq)[:-1] for seq in [x1, x2, x3, x4]]
    deltaY1, deltaY2, deltaY3, deltaY4 = [np.array(seq)[1:] - np.array(seq)[:-1] for seq in [y1, y2, y3, y4]]
    

两种方案修复后代码均可正常运行,成功绘制带方向箭头的水果指标折线图,不需要修改后续绘图相关逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:18:13