2012-07-14 71 views
3

我試圖用numpy.meshgrid和pylab.imshow()創建一個輪廓圖;這個工作非常出色,在首先使用一些技巧我計算器上找到(感謝傢伙!d)使用imshow修正座標軸

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

但是,你會發現,軸由兩個輸入的大小編號矩陣而不是實際值。橫座標應該在10萬到1,000,000縱座標去從1000到5000我的計算器閱讀該解決方案是使用「範圍」選項,所以:

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

這並修復軸,但是尺度圖像是一個非常奇怪的方式:

contour plot with correct axes but incorrect graphic http://web.mit.edu/scottnla/Public/SLP_contour2.pdf

而且我不知道是什麼原因造成這一點。

有關如何重新調整座標軸而不使圖像看起來很奇怪的想法嗎?

謝謝!!

彌敦道lachenmyer

回答

11

嘗試將參數aspect='auto'添加到imshow。像這樣:

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

非常感謝!這固定了一切! – 2012-07-14 08:20:24

+0

很高興我可以幫助:) – 2012-07-14 16:48:43