Rectangle类
1.Rectangle类介绍
官方3.4.1Rectangle类文档
以下是maplotlib库中的继承图:
由图可知Rectangle类继承自matplotlib.artist.Artist类。以下是官方文档中对Line2D类的说明:
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.
也就是说Rectangle类通过确定锚点以及高度和宽度来绘制一个矩形。锚点是包含两个浮点型的元组,高度和宽度是两个浮点型的数。Rectangle类可以理解为是控制绘制矩形的一个基础类。其实例如下:
: +------------------+
: | |
: height |
: | |
: (xy)---- width -----+
1.1Rectangle类定义
官方文档中Rectangle类的定义如下:
class Rectangle(xy,
width,
height,
angle=0.0,
**kwargs)
参数说明:
参数1:xy:浮点型,指定矩形左下角
参数2:width:浮点型,指定举行的宽度
参数3:height:浮点型,指定矩形高度
参数4:angle:浮点型,指定矩形绕xy点逆时针旋转的度数
参数5:**kwargs:Patch properties:指定Patch类属性,详见Patch类详解
参数详解:
- 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()
画图结果如下:
2.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()