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

使用matplotlib绘制矢量场时出现黑色矩形块是什么原因?

故障原因

黑色矩形块是矢量箭头密度过高、完全重叠导致的:

  • 你的代码在[-5,5]的单轴区间内生成了1000个采样点,经torch.meshgrid处理后,整个绘图区域共生成1000*1000=100万个待绘制的矢量箭头
  • matplotlib的quiver绘制的每个箭头都包含箭杆、箭头翼的黑色填充图形,当采样点间距小于箭头本身的尺寸时,相邻箭头会完全重叠覆盖,所有黑色填充拼接在一起就形成了无空隙的纯黑色矩形块,完全无法分辨单个箭头形态。

额外注意:你使用plt.axes([0,0,1,1])将绘图轴铺满了整个画布,会导致刻度、坐标轴标签被裁切到画布外,该问题不会导致黑块,但会影响正常显示效果。

修复方法
  • 降低采样密度:单轴采样点数量设置为20-30个即可清晰展示均匀矢量场的效果,无需设置1000个过高的采样值
  • 若有高密度采样需求,可在调用quiver时传入scale参数调大箭头的缩放系数、传入width参数调细箭杆宽度,避免箭头互相挤压重叠
  • 建议给torch.meshgrid传入indexing='xy'参数,匹配matplotlib的坐标顺序,避免网格方向异常;同时调整axes的边距参数,给刻度、标签留出显示空间

修复后的可运行参考代码:

import torch
import matplotlib.pyplot as plt

# 调低单轴采样点数
x_axis = torch.linspace(-5, 5, 25)
y_axis = torch.linspace(-5, 5, 25)
# 补充坐标索引参数,匹配matplotlib坐标系
x_grid, y_grid = torch.meshgrid(x_axis, y_axis, indexing='xy')
# 调整axes边距,避免内容裁切
ax = plt.axes([0.1, 0.1, 0.8, 0.8])
# 配置箭头缩放比例、箭杆宽度,避免重叠
ax.quiver(x_grid, y_grid, 1, -1, scale=30, width=0.005)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:36:26