如何将原点居中放置在imshow()图的中心

时间:2017-02-08 21:42:05

标签: python-3.x matplotlib

作为通过光圈模拟衍射的长程序的一部分,我正在摆弄试图让我的结果plt.imshow()的原点位于绘图的中心,即我希望改变轴

相关的代码部分是:

    n=40
    lam=0.0006
    k=(2*np.pi)/lam
    z=float(input("Type screen distance, z in mm: "))
    rho=float(input("Type rho in mm: "))

    delta = 2/n
    intensity = np.zeros((n+1,n+1))

    for i in range(n+1):
        x=-1+(i*delta)
        for j in range(n+1):
            y =-1+(j*delta)
            intensity[i,j] = (abs(square_2dsimpson_eval(-rho/2,rho/2,n)))**2  
    plt.imshow(intensity)
    plt.show()

生成以下图表。提前致谢。 enter image description here

1 个答案:

答案 0 :(得分:3)

为了将原点定位在图像绘图的中心,您可以使用对称extent

import numpy as np
import matplotlib.pyplot as plt

x = np.array([[1,2,1,4],[2,5,3,1],[0,1,2,2]])
plt.imshow(x, extent=[-x.shape[1]/2., x.shape[1]/2., -x.shape[0]/2., x.shape[0]/2. ])
plt.show()

enter image description here