我想并排绘制多个图像。这些图像都具有相同的高度,但宽度不同。我希望它们全部排列整齐,这样人物看起来很专业。相反,较窄的图像占用的垂直空间略少。这是该问题的一个最小工作示例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure(figsize=(5,5))
gridspec.GridSpec(5, 5)
# plot the narrow plot
plt.subplot2grid((5, 5), (0,0), colspan=2, rowspan=5)
plt.imshow(np.random.normal(size=(5,2)))
plt.axis('off')
# plot the wide plot
plt.subplot2grid((5, 5), (0,2), colspan=3, rowspan=5)
plt.imshow(np.random.normal(size=(5,3)))
plt.axis('off')
这是结果图:
请注意,尽管像素高度相同,并且在网格规范中跨越相同的行数,但第一张图像在垂直方向上还是稍微小一些。
我该如何解决这个问题?我对 GridSpec 以外的解决方案持开放态度。
最佳答案
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig, axs = plt.subplots(1,2,figsize=(5,5), gridspec_kw={'width_ratios': [2, 3]})
axs[0].imshow(np.random.normal(size=(5,2)))
axs[1].imshow(np.random.normal(size=(5,3)))
axs[0].axis('off')
axs[1].axis('off')
输出:
关于python - 为什么这些图像 gridspec 子图的高度略有不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69410906/