我试图使用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()
contour image with incorrect axes 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
答案 0 :(得分:11)
尝试将参数aspect='auto'
添加到imshow
。像这样:
pylab.imshow(SLP,aspect='auto',origin='lower',extent=(ff.min(),ff.max(),AA.min(),AA.max()))