【问题标题】:correcting the axes using imshow使用 imshow 校正轴
【发布时间】:2012-07-14 02:35:11
【问题描述】:

我试图使用 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 上读到,解决方案是这样使用“范围”选项:

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

我不确定是什么原因造成的。

关于如何在不使图像看起来如此奇怪的情况下重新缩放轴的任何想法?

谢谢!!

内森·拉肯迈尔

【问题讨论】:

    标签: python numpy matplotlib scipy


    【解决方案1】:

    尝试将参数aspect='auto'添加到imshow。像这样:

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

    【讨论】:

    • 非常感谢!这解决了一切!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2012-09-07
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多