默认情况下,matplotlib绘图可以非常不准确地放置线条。 例如,请参见附图中左端点的位置。那里至少有一个完整的像素空隙不应该出现。实际上,我认为该线的中心偏移了2个像素。 如何让matplotlib 精确 绘制?如果会有一些性能损失,我也不介意。 matplotlib绘图中不准确渲染的线条: 在matplotlib绘图中,线条被不准确地渲染出来 - 细节被放大了: 这是使用Ubuntu 16.04(Python 3)、Jupyter笔记本电脑(命令行产生类似的结果)默认安装创建的。相比之下,Mathematica直接并默认进行亚像素级渲染: 我们为什么不能做到呢?
当绘制关于x轴对称且缓慢逼近0的函数时,问题变得更加明显。例如,在这里:。 如果你在科学论文中告诉读者这两条曲线是对称的,那么实际情况非常尴尬!我通过将其导出为pdf而不是导出为png来解决了这个问题:。
考虑以下内容以了解正在发生的事情。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) 您可以通过将snap=False传递给plot来禁用像素对齐,但是一旦您开始放置近似单个像素宽度的线条,您将遇到问题,因为底层光栅化太粗糙了。
我完全同意应该继续研究这个。我发现通过使用 plt.figure 并调用 dpi=144 (默认值为 72),plt.plot 在 Jupyter 中可以得到(至少是大致)未移动的线条。不过图形确实变大了两倍...
ax.set_xlim([0.9999, 3.0001])
。 - pathoren