【发布时间】:2022-06-10 22:27:37
【问题描述】:
我有以下代码,我正在尝试删除 3 个子图之间的空间。
gridspec.GridSpec 和 fig.subplots_adjust 我都试过了,都失败了。
各个颜色条应该像现在一样在那里。
有什么想法吗?
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import make_axes_locatable
# random data
x1 = np.random.rand(1,10)
x2 = np.random.rand(1,10)
x3 = np.random.rand(1,10)
nrow, ncol = 3, 1
fig, axes = plt.subplots(nrow,ncol, figsize=(12,8))
fig.subplots_adjust(wspace=0.01, hspace=0.01)
axes = axes.flatten()
cmaps = ['Greens_r', 'Reds', 'jet']
x_all = [x1,x2,x3]
for i in range(3):
im = axes[i].imshow(x_all[i], cmap=cmaps[i])
#plt.colorbar(im, ax=axes[i])
axes[i].set_xticklabels([])
axes[i].set_yticklabels([])
axes[i].set_xticks([])
axes[i].set_yticks([])
#Make an axis for the colorbar on the right side
divider = make_axes_locatable(axes[i])
cax = divider.append_axes("right", size="5%", pad=0.05)
fig.colorbar(im, cax=cax)
【问题讨论】:
-
您想保持像素为正方形吗?如果没有,那么您可以在对
imshow的调用中使用aspect="auto"。 -
首先,建议使用
inset_axes作为颜色条,而不是旧的工具包。其次,你真的不能轻易做到这一点。减少空白的最佳方法是调整图形的纵横比 -
@DavidG 确实解决了这个问题。但是如果我想保持像素正方形呢?
-
@JodyKlymak 感谢您的提示。我没有意识到这一点。我会检查它
标签: python matplotlib imshow