matplotlib.patches.Rectangle调用set_angle报错无angle属性如何解决
报错原因
你遇到的属性报错是因为所使用的matplotlib版本低于3.4.0,angle属性和对应的set_angle()方法是matplotlib 3.4.0版本才正式加入Rectangle类的特性,旧版本不支持该调用。
解决方案
方案1:升级matplotlib版本(推荐)
直接执行升级命令即可兼容官方文档标注的set_angle用法:
pip install --upgrade matplotlib
升级完成后你示例中注释的patch.set_angle(70.)代码即可正常运行。
方案2:低版本兼容方案(无法升级时使用)
如果受环境限制不能升级matplotlib,可以通过旋转变换实现矩形朝向调整:
import matplotlib.pyplot as plt import matplotlib.patches as patches from matplotlib.transforms import Affine2D fig = plt.figure() ax = fig.add_subplot(111) # 初始化矩形时不传入角度参数 patch = patches.Rectangle([0.5, 0.5], 0.3, 0.1, edgecolor='black', linewidth=2, fc='r') ax.add_patch(patch) # 调整尺寸 patch.set_width(0.4) patch.set_height(0.2) # 定义旋转变换:绕矩形左下角点(即初始化的xy坐标)旋转70度 rotate_transform = Affine2D().rotate_deg_around(0.5, 0.5, 70) + ax.transData patch.set_transform(rotate_transform) plt.show()
如果后续修改了矩形的xy坐标,同步修改rotate_deg_around的前两个锚点参数即可。
额外提示
你提供的示例代码中plt.show缺少调用括号,修正为plt.show()才能正常弹出绘图窗口。
内容的提问来源于stack exchange,提问作者Tommaso Capano
相关产品推荐
相关产品推荐

