这个代码
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid
mat0 = [[1, 2], [3, 4], [5, 6], [7, 8]] # 4 rows × 2 columns
mat1 = [[-2, 0, 2, 4], [0, 2, 4, 6]] # 2 rows × 4 columns
fig = plt.figure(figsize=(9, 3))
grid = AxesGrid(fig, 111, nrows_ncols=(1,2),
axes_pad=0.15,
cbar_size="6%", cbar_location="right", cbar_mode="single")
for ax, mat in zip(grid.axes_all, (mat0, mat1)): im = ax.imshow(mat)
grid.cbar_axes[0].colorbar(im)
plt.figure()
plt.imshow(mat0)
plt.colorbar()
plt.show()
产生两个图形
在第一幅图中,我希望看到左边有一个高高的矩形,就像第二幅图一样。
当然,我不明白AxesGrid到底发生了什么。
我怎样才能让这两个图像并排,而不把高的那个截断?
一张照片值得1000字吗?
1条答案
按热度按时间r1zhe5dt1#
如果你处理的是不同尺寸的图像,在保持长宽比的同时以相同的高度并排显示它们可能会很棘手。一个更简单的替代方案,对我来说是一个更优雅的解决方案,可能只是使用子图和共享颜色栏。你可以这样做:
在此脚本中,
subplots
创建一个1x2轴网格。使用imshow
在这些轴上显示图像。颜色条在fig.colorbar
的帮助下在子图之间共享。shrink
参数用于调整颜色条的大小。您可能需要调整figsize
参数,以更好地适应您的数据和显示大小。结果如下:
希望这能帮上忙。