使用plt.add_patch报错,如何在散点集上添加指定尺寸的矩形?
解决Matplotlib绘制矩形时的
add_patch报错问题 我来帮你搞定这个绘制矩形的问题!你遇到的核心错误是直接调用plt.add_patch()——这个方法并不属于pyplot模块本身,而是属于Matplotlib的Axes(坐标轴)对象。下面是修正后的完整代码,以及关键步骤的解释:
修正后的完整代码
import matplotlib.pyplot as plt import matplotlib.patches as patches def main(): # 生成你定义的点集 x = [] y = [] for k in range(30): for l in range(30): x.append(4*k + 2*(l % 2)) y.append(2*l*3**(1/2)) # 创建图和坐标轴对象(关键!获取Axes实例) fig, ax = plt.subplots() # 绘制生成的点 ax.scatter(x, y, s=5, color='gray') # 创建你需要的矩形:左下角(0,0),宽4,高2√3 rect = patches.Rectangle( (0, 0), width=4, height=2*3**(1/2), linewidth=1, edgecolor='b', facecolor='none' # 这里设置为无填充,只显示边框;如果需要填充可以改成比如'lightblue' ) # 将矩形添加到坐标轴上(这才是正确的添加方式) ax.add_patch(rect) # 调整坐标轴范围,确保矩形和所有点都能显示 ax.set_xlim(-1, max(x)+1) ax.set_ylim(-1, max(y)+1) # 显示图形 plt.show() if __name__ == "__main__": main()
关键错误点解释
- 错误的
plt.add_patch():pyplot模块没有add_patch方法,必须通过Axes对象(也就是上面代码里的ax)来调用这个方法,才能把图形元素添加到画布上。 - 补全矩形参数:你原来的代码里
fa...应该是facecolor的缩写,我这里设置为'none'来只显示蓝色边框,你可以根据需求修改。 - 绘制点与调整范围:添加了
ax.scatter()来显示你生成的点集,同时用set_xlim和set_ylim确保所有内容都在视图范围内。
运行这段代码后,你就能看到从(0,0)开始的蓝色矩形,和你生成的点集一起显示在图里啦!
内容的提问来源于stack exchange,提问作者YohanRoth
相关产品推荐
相关产品推荐

