可视化之路(五)Rectangle类详解

Rectangle类

1.Rectangle类介绍

官方3.4.1Rectangle类文档
以下是maplotlib库中的继承图:
可视化之路(五)Rectangle类详解
由图可知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类详解


参数详解:

  1. 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()

画图结果如下:

可视化之路(五)Rectangle类详解

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()

画图结果如下:

可视化之路(五)Rectangle类详解


上一篇:Java官方教程(七-3)Using Objects 使用对象(2021.4.10)


下一篇:Matlab中rectangle函数使用