Python Matplotlib亚像素分辨率

Python Matplotlib亚像素分辨率,python,matplotlib,Python,Matplotlib,我想画一个包含几千个数据点的窄峰,另外我想画一条垂直线来标记这个峰。我在Win7上使用Python2.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') 当绘图足够宽时,您不会注意到任何错误,但

我想画一个包含几千个数据点的窄峰,另外我想画一条垂直线来标记这个峰。我在Win7上使用Python2.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')

当绘图足够宽时,您不会注意到任何错误,但当您将绘图缩小时,您将开始看到红线位于峰值的右侧。通过截图和放大像素,你可以看到这条线正好偏离了它应该在的位置一个像素。(上图显示了在有红线和无红线的情况下放大的峰值,以明确该线错过了峰值。)

我是愚蠢还是这是一只虫子?如果是一个bug,大概只有两行中的一行是错的:黑色还是红色


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

在绘制此图时,我无法重现你的问题。虽然这可能是因为我恰当地定义了
x
y
。我想这可能与你在x轴上绘制
-arange(-4,4,1e-5)+sqrt(2)
有关。@Ffisegydd使用OP的绘图命令,我也无法重现这个问题。我们可以把它缩小到后端——我使用的是Ubuntu 14.1的默认配置。请注意,尝试使用不同的后端以查看问题是否已解决。@Ffisegydd-您所说的“适当”是什么意思?我有理由相信问题不在于数据,因为当你使绘图更窄时,你实际上可以看到红线相对于黑线移动。@Hooked-刚刚用wx、Qt和Tkinter进行了尝试,在所有三种情况下都看到了相同的结果(我在Spyder中使用ipython).@dan man了解您使用的操作系统可能也很有用。