исправление осей с помощью imshow
Я пытался создать контурный график, используя 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, что решение состоит в том, чтобы использовать «экстент»; вариант как таковой:
pylab.imshow(SLP,origin='lower',extent=(ff.min(),ff.max(),AA.min(),AA.max()))
Это исправляет оси, но масштабировать изображение очень странно:
И я не уверен, что вызывает это.
Любые мысли о том, как я могу изменить масштаб оси, не делая изображение таким странным?
Спасибо!!
Натан Лахенмайер