在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()
Run Code Online (Sandbox Code Playgroud)
感谢您整理了一个简单的问题示例 - 它确实使调查这个问题变得更加容易!
这个问题有解决办法吗?
是的,事实证明是有的!我最初的猜测是,通过查看您附加的图像,发生了一些奇怪的剪切/捕捉。在排除了抗锯齿的可能性(通过轻按您提供的开关)后,我唯一的其他测试途径是将“snap”关键字设置为 false(有关 snap 方法的非常有限的文档,请参阅http://matplotlib.org/ api/artist_api.html#matplotlib.artist.Artist.set_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()
Run Code Online (Sandbox Code Playgroud)
视觉比较(可能最好在新窗口中打开图像,因为您的浏览器可能会缩放图像并引入进一步的视觉效果):
我对 mpl 中的 snap 属性以及这是否真的是理想的行为不是特别了解,因此我将在 mpl-devel 邮件列表上发布一个问题,以展开有关此问题的对话。希望这个答案能同时帮助您。
归档时间: |
|
查看次数: |
562 次 |
最近记录: |