Matplotlib进阶教程(2.7)imshow 的 origin 与 extent 参数 您所在的位置:网站首页 imshow中的cmap Matplotlib进阶教程(2.7)imshow 的 origin 与 extent 参数

Matplotlib进阶教程(2.7)imshow 的 origin 与 extent 参数

2023-03-14 23:45| 来源: 网络整理| 查看: 265

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))一、origin

origin 决定图的正常显示还是倒着显示。

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()二、extent

extent 参数把呈现出的图像的“左”、“右”、“下”、“上”,设定到特定的 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 实验室设备网 版权所有