gpt4 book ai didi

matplotlib - matplotlib 补丁绘图中的工件

转载 作者:行者123 更新时间:2023-12-04 12:42:03 24 4
gpt4 key购买 nike

在 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()

output

最佳答案

感谢您整理了一个简单的问题示例 - 这确实让调查变得更加容易!

Is there a solution to this problem?



是的,事实证明有!我最初的猜测是,仅通过查看您附加的图像,就会发现发生了一些奇怪的剪切/捕捉。在排除抗锯齿的可能性(通过轻弹您提供的开关)后,我唯一的其他测试途径是将“snap”关键字设置为 false(有关 snap 方法的非常有限的文档,请参阅 http://matplotlib.org/api/artist_api.html#matplotlib.artist.Artist.set_snap)。

设置 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()

视觉比较(可能最好在新窗口中打开图像,因为您的浏览器可能会缩放图像并引入更多视觉效果):

comparison of the snap property

我不是特别了解 mpl 中的 snap 属性以及这是否真的是理想的行为,所以我将在 mpl-devel 邮件列表上发布一个问题,以开启关于这个问题的对话。希望这个答案在此期间对您有所帮助。

关于matplotlib - matplotlib 补丁绘图中的工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com