matplotlib面片打印中的瑕疵

matplotlib面片打印中的瑕疵,matplotlib,Matplotlib,在matplotlib中打印小面片对象时,由于显示分辨率,会引入瑕疵。使用抗锯齿并不能解决问题 这个问题有解决办法吗 import matplotlib.pyplot as plt import matplotlib.patches as patches ax = plt.axes() for x in range(-10,11): for y in range(-10,11): rect = patches.Rectangle((x, y), width=0.1,

在matplotlib中打印小面片对象时,由于显示分辨率,会引入瑕疵。使用抗锯齿并不能解决问题

这个问题有解决办法吗

import matplotlib.pyplot as plt
import matplotlib.patches as patches

ax = plt.axes()

for x in range(-10,11):
    for y in range(-10,11):
        rect = patches.Rectangle((x, y), width=0.1, height=0.1, color='k',aa=True)
        ax.add_patch(rect)

plt.xlim([-30, 30])
plt.ylim([-30, 30])
plt.show()

感谢您为这个问题提供了一个简单的例子-这真的让调查变得容易多了

这个问题有解决办法吗

import matplotlib.pyplot as plt
import matplotlib.patches as patches

ax = plt.axes()

for x in range(-10,11):
    for y in range(-10,11):
        rect = patches.Rectangle((x, y), width=0.1, height=0.1, color='k',aa=True)
        ax.add_patch(rect)

plt.xlim([-30, 30])
plt.ylim([-30, 30])
plt.show()
是的,原来有!我最初的猜测是,仅仅通过查看您附加的图像,就发现有一些奇怪的剪辑/捕捉正在进行。排除了抗锯齿的可能性后(通过轻弹您提供的开关),我唯一的其他测试方法是将“snap”关键字设置为false(对于snap方法上非常有限的文档,请参阅)

设置捕捉会起作用,最终会得到预期的结果:

import matplotlib.pyplot as plt
import matplotlib.patches as patches

ax = plt.axes()

for x in range(-10,11):
    for y in range(-10,11):
        rect = patches.Rectangle((x, y), width=0.1, height=0.1, 
                                 color='k', snap=False)
        ax.add_patch(rect)

plt.xlim([-30, 30])
plt.ylim([-30, 30])
plt.show()
视觉比较(最好在新窗口中打开图像,因为浏览器可能会缩放图像并引入更多视觉效果):


我对mpl中的snap属性以及这是否是真正需要的行为不太了解,因此我将在mpl-devel邮件列表上发布一个问题,以展开关于这个问题的对话。希望这个答案同时能帮助您。

我也遇到过这个问题。这对您的交互式会话没有帮助,但如果您将图像保存为矢量化格式,即
plt.save(“a.pdf”)
则生成的pdf不会出现相同的瑕疵。设置
ec='none'
可能会有所帮助:
rect=patches.Rectangle((x,y),width=1,height=1,color='k',ec='none')
我无法重现此问题。在OS X上使用matplotlib 1.1.1保存为png和jpg,结果很好。