Rectangle 类官方文档,以下是 maplotlib 库中的继承图:
由图可知 Rectangle 类继承自 Patch 类,关于 Patch 类,详情见 【matplotlib】可视化之路——Patch类详解。以下是官方文档的说明:
A rectangle defined via an anchor point xy and its width and height.The rectangle extends from xy[0] to xy[0] + width in x-direction and from xy[1] to xy[1] + height in y-direction.
如果说 Patch 类是一个带有颜色块,那么 Rectangle 类就是根据锚点、宽度和高度确定一个可绘制的矩形块(这个相比于Patch就是质的飞跃,因为Rectangle类具有了形态)。锚点是包含两个浮点型的元祖,高度和宽度是两个浮点型。示例如下:
+------------------+
| |
height |
| |
(xy)---- width -----+
Rectangle 类定义如下:
class Rectangle(Patch):
def __init__(self, xy, width, height, angle=0.0, **kwargs):
参数说明:
xy 指定锚点坐标,在一般情况下可以把 xy 想象成左下角,但 xy 是哪个角实际上取决于坐标轴的方向以及宽度和高度的符号。例如,如果 x 轴倒置或宽度为负,xy 将是右下角。示例程序如下:
fig, ax = plt.subplots(2, 2)
test_Rectangle00 = plt.Rectangle((6, 6), 2, 2, 0) #左下角(6, 6), w=2, h=2
test_Rectangle01 = plt.Rectangle((6, 6), 2, -2, 0) #左上角(6, 6), w=2, h=-2
test_Rectangle10 = plt.Rectangle((6, 6), -2, -2, 0) #右上角(6, 6), w=-2, h=-2
test_Rectangle11 = plt.Rectangle((6, 6), -2, 2, 0) #右下角(6, 6), w=-2, h=2
#添加矩形
ax[0][0].add_patch(test_Rectangle00)
ax[0][0].set_title('左下角(6, 6), w=2, h=2')
#添加矩形
ax[0][1].add_patch(test_Rectangle01)
ax[0][1].set_title('左上角(6, 6), w=2, h=-2')
#添加矩形
ax[1][0].add_patch(test_Rectangle10)
ax[1][0].set_title('右上角(6, 6), w=-2, h=-2')
#添加矩形
ax[1][1].add_patch(test_Rectangle11)
ax[1][1].set_title('右下角(6, 6), w=-2, h=2')
#添加锚点和设置基础属性
for i in range(2):
for j in range(2):
ax[i][j].plot(6, 6, markersize=6, marker='o', markerfacecolor='#FF0000', linewidth=0)
ax[i][j].grid(True)
ax[i][j].set(**prop_normal)
ax[i][j].text(6, 6, '锚点')
plt.show()
画图结果如下:
angle 指定旋转尺度,千万注意这里指的是如果旋转度数是正数将会逆时针旋转,负数才是顺时针旋转。示例程序如下:
fig, ax = plt.subplots()
angle = 0
color_list = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#10c020', '#d20F99']
for i in range(8):
test_Rectangle = plt.Rectangle((6, 6), 0.1, 2, angle, facecolor=color_list[i], label=str(angle) + '度')
ax.add_patch(test_Rectangle)
angle += 45
ax.plot(6, 6, markersize=6, marker='o', markerfacecolor='#000000', linewidth=0)
plt.text(6, 6, '锚点')
plt.title('逆时针旋转')
plt.xlim([0, 10])
plt.ylim([0, 10])
plt.grid(True)
plt.legend()
plt.show()
画图结果如下:
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!