Matplotlib混淆了亚像素分辨率

时间:2014-04-28 13:58:06

标签: python matplotlib

我想绘制一个包含数千个数据点的窄峰,另外我想绘制一条标记峰值的垂直线。我在Win7上使用Python 2.7和Matplotlib 1.3.1(在两台独立的PC上检查)。

例如,这里是以sqrt(2)为中心的高斯,其峰值标记为红色:

plt.plot(-arange(-4,4,1e-5)+sqrt(2), exp(-arange(-4,4,1e-5)**2)*0.92,'k',
         [sqrt(2),sqrt(2)],[0,1],'r')

matplotlib zoom issue

当情节足够宽时,您不会注意到任何问题,但是当您使情节变窄时,您将开始看到红线位于峰值的右侧。通过截取屏幕并放大像素,您可以看到该线条恰好是一个像素点。 (上图显示了使用和不使用红线放大的峰值,以便清楚地表明线条已经错过了峰值。)

我是傻瓜还是这个虫子?如果它是一个错误,大概只有两条线中的一条是错误的:黑色还是红色?

担心单个像素可能听起来很迂腐,但是你的眼睛实际上非常擅长做亚像素插值并且很容易发现问题。

0 个答案:

没有答案