我想在matplotlib中的轴内渲染一个矩形。轴是单位正方形,原点位于左下角。对于矩形与轴大小相同的情况 - 我希望矩形看起来好像是轴的边界。
问题是渲染似乎不正确。矩形的左(x = 0)和顶(y = 1)得到渲染,但是底部(y = 0)和右(x = 1)没有显示。
注意:这不仅仅适用于矩形......对于线条也是如此。生成的渲染显示为:
以下代码段演示了此问题:
import matplotlib.pyplot as mpl
r = mpl.Rectangle((0,0), 1, 1, edgecolor='red', facecolor='none', zorder=100)
axes = mpl.gca()
axes.add_patch(r)
axes.set_xbound(0, 1)
axes.set_ybound(0, 1)
axes.get_xaxis().set_visible(False)
axes.get_yaxis().set_visible(False)
[spine.set_visible(False) for spine in axes.spines.values()]
mpl.show()
我还渲染为PDF并验证这是正常的(例如,当存在所有边的放大时)。
这似乎与底层图像如何光栅化到屏幕有关。有没有解决这个问题的方法?
答案 0 :(得分:2)
确切的行为取决于后端(您的示例在我的系统上按照您的喜好工作。)
但是,如果您为矩形关闭剪裁,它应该按照您想要的任何后端运行。
在上面的示例中,只需执行r.set_clip_on(False)
。
import matplotlib.pyplot as plt
r = plt.Rectangle((0,0), 1, 1, edgecolor='red', facecolor='none', zorder=100)
ax = plt.gca()
ax.add_patch(r)
ax.axis([0, 1, 0, 1])
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
[spine.set_visible(False) for spine in ax.spines.values()]
r.set_clip_on(False)
plt.show()