使用Matplotlib在同一画布绘制多个箭头触发TypeError报错问题
问题原因定位
代码触发报错+无法实现同画布绘图的原因有两个:
- 参数传递不符合
plt.arrow()的接口要求:该方法必填的4个位置参数依次为起点x坐标、起点y坐标、x方向延伸长度、y方向延伸长度,原代码直接传入存储坐标、偏移量的二元组,没有将元组内的数值拆分为独立参数传入,导致程序识别到仅传入2个位置参数,缺失dx、dy两个必填项,抛出类型错误。 - 画布展示语句位置错误:原代码将
plt.show()写在for循环内部,每绘制一个箭头就会生成独立画布弹出,无法实现单画布展示所有箭头的需求。
修正后可运行代码
import matplotlib.pyplot as plt I6 = [ [(0.5, -0.5), (1.0, 0.0)], [(0.5, -0.5), (0.0, -1.0)], [(1.5, -0.5), (0.0, -1.0)], [(0.5, -1.5), (1.0, 0.0)] ] for item in I6: # 拆分起点坐标、方向偏移量 x, y = item[0] dx, dy = item[1] plt.arrow(x, y, dx, dy, width=0.05) # 调整坐标轴范围,保证所有箭头完整显示 plt.xlim(0, 2) plt.ylim(-3, 0) # 所有元素绘制完成后统一展示画布 plt.show()
运行后即可在同一个画布上看到4个按
I6定义绘制的箭头。
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

