Matplotlib 中如何在图像上绘制矩形
当我们需要在 Matplotlib 中的图像或纯图形上绘制矩形时,应通过 add_patch
方法将 matplotlib.patches
中的 rectangle
patch
添加到轴上。
matpotlib patch
是具有外观和边缘颜色的 2D artist
。Matplotlib 具有如下的 patch
,
Arc
Arrow
ArrowStyle
BoxStyle
Circle
CirclePolygon
ConnectionPatch
ConnectionStyle
Ellipse
FancyArrow
FancyArrowPatch
FancyBboxPatch
Patch
Path
PathPatch
Polygon
Rectangle
RegularPolygon
Shadow
Wedge
Rectangle
patch
绘制一个指定左下角坐标和指定宽度和高度的矩形。
Rectangle(xy, width, height, angle=0.0, fill=True, **kwargs)
xy
是一个长度为 2 的元组,用于指定要绘制的矩形的左下角的坐标,
width
是矩形的宽度
height
是矩形的高度,
angle
是逆时针角度,以度为单位。
fill
指定矩形是否用 facecolor
填充。
一些有效的 kwargs
如下,
-
edgecolor
:矩形边缘的颜色 -
facecolor
:矩形的填充色
在 Matplotlib 中绘制矩形
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig, ax = plt.subplots()
ax.plot([1,4],[1,4])
ax.add_patch(
patches.Rectangle(
(1, 1),
0.5,
0.5,
edgecolor = 'blue',
facecolor = 'red',
fill=True
) )
plt.show()
矩形 patch
由构造函数创建,
patches.Rectangle(
(1, 1),
1,
2,
edgecolor = 'blue',
facecolor = 'red',
fill=True
)
其左下角的坐标为 (1, 1)
,其宽度为 1
,高度为 2
。
边缘颜色指定为 blue
,同时填充颜色为 red
。
轴对象的 add_patch(P)
方法在轴上添加一个 Patch
。
如果将 fill
设置为 False
,即使 facecolor
已经指定了某些颜色了,矩形也不会被填充。
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig, ax = plt.subplots()
ax.plot([1,4],[1,4])
ax.add_patch(
patches.Rectangle(
(1, 1),
1,
2,
edgecolor = 'blue',
facecolor = 'red',
fill=False
) )
plt.show()
在 Matplotlib 中的图像上绘制矩形
如果我们需要在 Matplotlib 中的图像上绘制一个矩形,则它与上述方法类似,但是需要额外的步骤来获取轴 Axes
句柄。
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from PIL import Image
im = Image.open('butterfly.jpg')
plt.imshow(im)
ax = plt.gca()
rect = patches.Rectangle((80,10),
70,
100,
linewidth=2,
edgecolor='cyan',
fill = False)
ax.add_patch(rect)
plt.show()
plt.imshow(im)
显示图像 butterfly.jpg
,而轴 Axes
的句柄可以通过函数 plt.gca()
获得,gca
是获取当前轴 get current axes
的首字母缩写。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。