使用imshow校正坐标轴

3

我试图使用numpy.meshgrid和pylab.imshow()绘制轮廓图;起初,我在stackoverflow上找到了一些有用的提示(感谢那位大佬!:D)

f = scipy.linspace(1e5,1e6,100)
A = scipy.linspace(1e3,1e5,100)
ff,AA = numpy.meshgrid(f,A)
SLP = calc_SLP2D(ff,AA)
maxAmps = maxA(f)
print maxAmps
brezovich = calc_SLP2D(f,maxAmps)
print brezovich
pylab.imshow(SLP,origin='lower')
pylab.plot(f,maxA(f))
pylab.colorbar()
pylab.xlabel('Frequency [kHz]',{'fontsize':20})
pylab.ylabel('Field Amplitude [A/m]',{'fontsize':20})
pylab.title('Brezovich Criterion',{'fontsize':20})
pylab.grid()
pylab.show()

错误轴的等高线图 http://web.mit.edu/scottnla/Public/SLP_contour.pdf

但是你会发现轴的标注是根据两个输入矩阵的大小而不是实际数值来编号。横坐标应该从100,000到1,000,000,纵坐标应该从1000到5000。我在stackoverflow上看到解决方案是使用 'extent' 选项,如下所示:

pylab.imshow(SLP,origin='lower',extent=(ff.min(),ff.max(),AA.min(),AA.max()))

这确实修复了轴,但以一种非常奇怪的方式缩放图像:带有正确轴但不正确图形的等高线图。我不确定是什么原因导致了这个问题。你有没有想法如何重新调整轴而不使图像看起来如此奇怪?谢谢!- Nathan Lachenmyer
1个回答

14

尝试在imshow中添加参数aspect='auto',就像这样:

pylab.imshow(SLP,aspect='auto',origin='lower',extent=(ff.min(),ff.max(),AA.min(),AA.max()))

非常感谢!那修复了一切!! - nathan lachenmyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接