Rectangle和FancyBboxPatch之间的行为不一致

时间:2014-03-25 23:55:58

标签: python matplotlib

我注意到Rectangle和FancyBBoxPatch对象之间的绘制方式不一致。我希望以下代码可以生成两个几乎相同的正方形。

from matplotlib.patches import Rectangle, FancyBboxPatch
import matplotlib.pyplot as plt

f = plt.figure()
ax = f.add_subplot(1,1,1)

bbox1 = Rectangle((0.4, 0.4), .1, .1,
                  transform=ax.transData, ec='red',fill=False)

bbox2 = FancyBboxPatch((0.4, 0.4), .1, .1, boxstyle='square',
                       transform=ax.transData, ec='green',fill=False)
ax.add_patch(bbox1)
ax.add_patch(bbox2)

f.show()

实际结果与预期不符。在交互式窗口中绘制时,平移和缩放按照预期使用transData对象工作。似乎FancyBBoxPatch的初始大小和位置没有像我预期的那样设置。你能告诉我我失踪的是什么吗? enter image description here

1 个答案:

答案 0 :(得分:1)

我不确定RTFM的简单案例的礼节是什么,但我会发布答案而不是删除问题。

' square'默认情况下,样式的框周围有填充0.3。设置pad=0会产生一致的结果。

from matplotlib.patches import Rectangle, FancyBboxPatch
import matplotlib.pyplot as plt

f = plt.figure()
ax = f.add_subplot(1,1,1)

bbox1 = Rectangle((0.4, 0.4), .1, .1,
                  transform=ax.transData, ec='red',fill=False)

bbox2 = FancyBboxPatch((0.4, 0.4), .1, .1, boxstyle='square,pad=0',
                       transform=ax.transData, ec='green',fill=False)
ax.add_patch(bbox1)
ax.add_patch(bbox2)

f.show()