我注意到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
的初始大小和位置没有像我预期的那样设置。你能告诉我我失踪的是什么吗?
答案 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()