【发布时间】:2012-04-12 05:09:47
【问题描述】:
我正在尝试使用 matplotlib 在 python 中绘制一个小图像,并希望显示的轴具有与其生成的 numpy 数组相同的形状,即不应重新采样数据。换句话说,数组中的每个条目都应该对应于屏幕上的一个像素(或附近)。这似乎微不足道,但即使在互联网上搜索了一段时间后,我似乎也无法让它工作:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
X = np.random.rand(30,40)
fig = plt.figure()
fig.add_axes(aspect="equal",extent=[0, X.shape[1], 0, X.shape[0]])
ax = fig.gca()
ax.autoscale_view(True, False, False)
ax.imshow(X, cmap = cm.gray)
plt.show()
【问题讨论】:
-
看起来您提供的代码可以满足您的要求,矩形 (40x30) 保留在绘制的图像中,并且轴限制与图像形状相匹配。我错过了你的问题吗?
-
对不起,我的措辞令人困惑。我感兴趣的是类似于 matlab 中的 imshow 功能,其中屏幕上的像素数与矩阵中的条目数匹配,即轴不会重新采样以匹配图形大小。
-
你的意思是没有插值的图像?如果是这样,只需将您的代码
imshow更改为matshow,或将interpolation = 'nearest'作为参数添加到imshow 函数。 -
谢谢,这停止了平滑插值,但我怎样才能减小轴的大小,使图形反映图像的低分辨率?目前它似乎仍在重新调整以匹配图形大小。
标签: python matplotlib