Matplotlib进阶教程(2.7)imshow 的 origin 与 extent 参数 | 您所在的位置:网站首页 › imshow中的cmap › Matplotlib进阶教程(2.7)imshow 的 origin 与 extent 参数 |
imshow() 可以将图像的 2D 或 3D RGB(A) 数组映射到到 figure 的 axes 中,最终映射的方向由 origin 和 extent 参数控制。 import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl import matplotlib.image as mpimg mpl.rcParams.update({ 'font.family':'STSong', 'mathtext.fontset':'stix', 'figure.dpi':150 })载入图像数据 img = mpimg.imread('C:\\Users\\steph\\Documents\\python\\stinkbug.png')做个自定义函数,方便后面计算。 def my_plt(ax,img,origin,extent): ax.imshow(img, origin=origin, extent=extent) ax.set_title(f'origin={origin}\nextent={extent}') if extent == None: ax.annotate('原点', xy=(0,0), xytext=(img.shape[0]/6,img.shape[0]/6), ha="center", va="center", arrowprops=dict(facecolor='r', shrink=0.01, headwidth = 4, width = 0.5, headlength = 10)) else: ax.annotate('原点', xy=(0,0), xytext=(np.abs((extent[3]-extent[2]))/6, np.abs((extent[1]-extent[0]))/6,), ha="center", va="center", arrowprops=dict(facecolor='r', shrink=0.01, headwidth = 4, width = 0.5, headlength = 10))一、originorigin 决定图的正常显示还是倒着显示。 upper,图像正常显示,原点位置在左上角,默认。lower, 图像倒着显示,原点位置在左下角。fig,ax = plt.subplots(1,2,figsize=(10,4)) my_plt(ax[0],img,'upper',None) my_plt(ax[1],img,'lower',None) plt.show()二、extentextent 参数把呈现出的图像的“左”、“右”、“下”、“上”,设定到特定的 axis 坐标上。 1.extent=None从上例可以看出,默认情况下,extent=None,则 当 origin='upper' 时,图像的“左右下上”分别是 (-0.5,numcols-0.5,numrows-0.5,-0.5) ,当 origin='lower' 时,图像的“左右下上”分别是 (-0.5,numcols-0.5,-0.5,numrows-0.5) 。即当 extent=None 时,原点的位置根据 origin ,放在左上角(upper)或左下角(lower)。 >>> print(img.shape) (375, 500, 3)2.extent≠None而当给 extent 赋值后,原点的位置受 extent 控制, origin 只控制图像的正反。 fig,ax = plt.subplots(4,2,figsize=(10,16),constrained_layout=True) my_plt(ax[0,0],img,'upper',(0,500,375,0)) my_plt(ax[1,0],img,'upper',(500,0,375,0)) my_plt(ax[2,0],img,'upper',(0,500,0,375)) my_plt(ax[3,0],img,'upper',(500,0,0,375)) my_plt(ax[0,1],img,'lower',(0,500,375,0)) my_plt(ax[1,1],img,'lower',(500,0,375,0)) my_plt(ax[2,1],img,'lower',(0,500,0,375)) my_plt(ax[3,1],img,'lower',(500,0,0,375))当然,你也可以把 extent 改成其他值,比如: fig,ax = plt.subplots(1,2,figsize=(8,4),constrained_layout=True) my_plt(ax[0],img,'upper',(0,1,0,1)) my_plt(ax[1],img,'lower',(-10,5,5,-15)) plt.show() |
CopyRight 2018-2019 实验室设备网 版权所有 |