缩放imshow生成的图像

时间:2016-07-26 14:05:13

标签: python matplotlib imshow

以下代码段

String

生成两个大小相同但图像密度低得多的图像。在第二个。

enter image description here

我希望第二幅图像以相同的比例(即像素密度)绘制,而不填充子图,可能正确对齐(即图像的原点位于与第一张相同的子图位置。 )

修改

import matplotlib.pyplot as plt import numpy as np arr1 = np.arange(100).reshape((10,10)) arr2 = np.arange(25).reshape((5,5)) fig, (ax1, ax2, ) = plt.subplots(nrows=2, figsize=(3,5)) ax1.imshow(arr1, interpolation="none") ax2.imshow(arr2, interpolation="none") plt.tight_layout() plt.show() arr1的形状只是展示问题的一个示例。我正在寻找的方法是确保arr2在图的不同部分生成的两个不同图像以完全相同的比例绘制。

1 个答案:

答案 0 :(得分:1)

我能想到的最简单的事情不起作用,但gridspec确实如此。这里的起源没有明确对齐,它只是利用了gridspec如何填充行(并且有一个未使用的子图作为间隔符)。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import gridspec

sizes = (10, 5)
arr1 = np.arange(sizes[0]*sizes[0]).reshape((sizes[0],sizes[0]))
arr2 = np.arange(sizes[1]*sizes[1]).reshape((sizes[1],sizes[1]))


# Maybe sharex, sharey? No, we pad one and lose data in the other
#fig, (ax1, ax2, ) = plt.subplots(nrows=2, figsize=(3,5), sharex=True, sharey=True)
fig = plt.figure(figsize=(3,5))

# wspace so the unused lower-right subplot doesn't squeeze lower-left
gs = gridspec.GridSpec(2, 2, height_ratios = [sizes[0], sizes[1]], wspace = 0.0)

ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,0])


ax1.imshow(arr1, interpolation="none")
ax2.imshow(arr2, interpolation="none")

plt.tight_layout()
plt.show()

enter image description here