如何使matplotlib准确放置线?

use*_*044 5 python matplotlib

默认情况下,matplotlib图可能会非常不准确地放置线。

例如,请参见附图中左端点的位置。至少不应该存在整个像素点。实际上,我认为线中心偏离了2个像素。

如何使matplotlib 准确绘制?我不在乎是否会影响性能。

matplotlib图中渲染线条不正确:

matplotlib图中渲染线条不正确

matplotlib图中渲染线条不正确-放大的细节:

matplotlib图中渲染线不正确-放大的细节

这是使用Jupyter笔记本电脑Ubuntu 16.04(Python 3)中的默认安装完成的(从命令行获得类似结果)。

为了进行比较,Mathematica直接进行了亚像素完美渲染,默认情况下: Mathematica渲染的同一件事 我们为什么不能呢?

tac*_*ell 3

请考虑以下事项,看看发生了什么

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 4], clip_on=False, lw=5, alpha=.5)
ax.set_xlim([1, 3])

fig.savefig('so.png', dpi=400)
Run Code Online (Sandbox Code Playgroud)

例子

您还可以通过传递snap=False到 来禁用像素捕捉plot,但是一旦您开始放置〜单像素宽线,您就会遇到问题,因为底层光栅化太粗糙。