如何设置 imshow 比例

Sol*_*ong 6 python matplotlib

我厌倦了 matplotlib,因为它很难以指定大小绘制图像。

我有两张 32*32、20*20 尺寸的图像。我只想以原始大小或与其原始大小成比例绘制它们。

在阅读了很多帖子之后,我现在使用的代码是

plt.autoscale(False)
plt.subplot(1, 2, 1); 
plt.imshow(img_blob[0, 0, :, :], cmap='gray',
           interpolation='nearest', extent=[0, 32, 0, 32])
plt.subplot(1, 2, 2); 
plt.imshow(output_blob[0, 0, :, :], cmap='gray',
           interpolation='nearest', extent=[0, 20, 0, 20])
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是这两个图像仍然以相同的大小显示。

在此处输入图片说明

我试过无花果

plt.subplot(1, 2, 2, figsize=(2.0, 2.0)); 
Run Code Online (Sandbox Code Playgroud)

但显然没有 figsize 属性。

是否可以制作不同大小的两个子图?

Aje*_*ean 3

imshow如果图像比例非常重要,您还可以使用另一种选择……有一种方法figimage可以为您的身材显示完全未重新采样的图像。使用它有点费力——它并没有在幕后做太多事情来让你的生活更轻松——但它在某些情况下可能很有用。这是使用您的示例的内容

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,1,20)
z1 = x[:,np.newaxis] * x
y = np.linspace(0,1,32)
z2 = y[:,np.newaxis] * y

fig = plt.figure(figsize=(2,1))
plt.figimage(z1, 25, 25, cmap='gray') # X, Y offsets are in pixels
plt.figimage(z2, 75, 25, cmap='gray')

plt.show()
Run Code Online (Sandbox Code Playgroud)