Matplotlib中轴边界处的渲染不正确

时间:2011-07-14 21:12:53

标签: python matplotlib plot wxpython rendering

我想在matplotlib中的轴内渲染一个矩形。轴是单位正方形,原点位于左下角。对于矩形与轴大小相同的情况 - 我希望矩形看起来好像是轴的边界。

问题是渲染似乎不正确。矩形的左(x = 0)和顶(y = 1)得到渲染,但是底部(y = 0)和右(x = 1)没有显示。

注意:这不仅仅适用于矩形......对于线条也是如此。生成的渲染显示为:

Improper rectangle rendering.

以下代码段演示了此问题:

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并验证这是正常的(例如,当存在所有边的放大时)。

这似乎与底层图像如何光栅化到屏幕有关。有没有解决这个问题的方法?

1 个答案:

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

enter image description here