poprawianie osi za pomocą imshow

Próbowałem utworzyć wykres konturowy za pomocą numpy.meshgrid i pylab.imshow (); działało to bardzo dobrze na początku, korzystając z kilku wskazówek, które znalazłem na stackoverflow (dzięki facetowi!: 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()

obraz konturowy z nieprawidłowymi osiami http://web.mit.edu/scottnla/Public/SLP_contour.pdf

Jednak zauważysz, że osie są ponumerowane przez rozmiar dwóch macierzy wejściowych, a nie przez wartości rzeczywiste. Odcięta powinna wynosić od 100 000 do 1 000 000 przy rzędnej wynoszącej od 1000 do 5000. Przeczytałem na przepływowym stosie, że rozwiązaniem jest użycie opcji „zakres” jako takiej:

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

To naprawia osie, ale skaluje obraz jest naprawdę dziwny:

wykres konturowy z prawidłowymi osiami, ale niepoprawna grafika http://web.mit.edu/scottnla/Public/SLP_contour2.pdf

I nie jestem pewien, co to powoduje.

Jakieś przemyślenia, w jaki sposób mogę przeskalować osie, nie czyniąc tego obrazu tak dziwnym?

dzięki!!

nathan lachenmyer

questionAnswers(1)

yourAnswerToTheQuestion