import matplotlib.pyplot as plt
import numpy as np
n = 16
im = np.eye(n)
fig = plt.figure()
ax = fig.add_subplot(121)
ax.imshow(im)
ax = fig.add_subplot(122)
ax.imshow(im, extent=(0, n, 0, n))
plt.show()
results in the following figure
![enter image description here](https://i.stack.imgur.com/Mpt13.png)
我本以为有了这个extent
,两个图(几乎)相同,但它们并不相同:注意 y 轴是如何翻转的。更可气的是,右边的数字是错误的:原点处的值显示为0,而实际上是1。
如果我在范围内翻转 y 参数,extent=(0, n, n, 0)
,我得到了预期的行为。
据我了解,描述extent
的论证imshow,
extent:标量(左、右、下、上),可选,默认:None
左下角和右上角的位置(以数据坐标表示)。如果None
,图像的位置使得像素中心落在从零开始的(行、列)索引上。
对于这种行为并没有真正明确。
我的问题是,为什么会发生这种翻转,为什么我们必须在一定程度上反转顶部/底部才能获得预期的行为?
EDIT
我读过了这个问题,OP没有提到翻转问题,答案也没有带来这个问题。
Setting origin='lower'
元素确实将第一个图像像素带到(0,0)
但图像会颠倒显示。
我确信有一个简单的解释可以一致地解释这些行为,但目前还无法确定。