python - matplotlib 在不重新采样的情况下绘制小图像

标签 python matplotlib

我正在尝试使用 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()

最佳答案

我自己也遇到过同样的问题。如果 imshowinterpolation='nearest' 选项不够好,那么如果您的主要目标是查看原始、未缩放、未插值、未-搞砸了 matplotlib 中的像素,那么你就无法击败 figimage 恕我直言。演示:

import numpy as np
import numpy.random
import matplotlib.pyplot as plt

a=256*np.random.rand(64,64)

f0=plt.figure()
plt.imshow(a,cmap=plt.gray())
plt.suptitle("imshow")

f1=plt.figure()
plt.figimage(a,cmap=plt.gray())
plt.suptitle("figimage")

plt.show()

当然,这意味着放弃轴(或以某种方式自己绘制)。 figimage 有一些选项可以让您围绕图形移动图像,所以我想可以在通过其他方式创建的某些轴的顶部移动它们。

关于python - matplotlib 在不重新采样的情况下绘制小图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910388/

相关文章:

python - 将 DataFrame 除以第一行

python 刽子手不透露字母

python-3.x - 图标题设置在底部

python - 如何在Python中进行时间序列分析时组合两个折线图进行数据验证

python - 在 VS Code 中为 python 脚本运行终端?

python - 是否使用python来进行巨大的计算?

python - 如何为seaborn热图中的值分配颜色

python - 有没有一种方法可以找到/检测两个像素的中间或opencv创建的两行?

python - 如何在matplotlib中正确绘制带有旋转矩形的图形棒?

python - Python 的 time.process_time() 是否包含子进程占用的 CPU 时间?如何包含它?