两行五列子图用一个共享的水平的colorbar表示整张图,且要在所有图的下方,大小适中
时间: 2024-06-10 08:07:42 浏览: 66
可以使用Matplotlib提供的GridSpec和make_axes_locatable函数来实现该需求,具体代码示例如下:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
# 构造数据
data = np.random.rand(10, 10)
# 创建子图布局
fig = plt.figure(figsize=(8, 6))
gs = fig.add_gridspec(2, 5, wspace=0.4, hspace=0.4)
# 绘制子图并共享colorbar
for i in range(2):
for j in range(5):
ax = fig.add_subplot(gs[i, j])
im = ax.imshow(data, vmin=0, vmax=1, cmap='jet')
if j == 4:
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.1)
cbar = fig.colorbar(im, cax=cax)
ax.set_title(f'({i}, {j})', fontsize=10)
# 设置colorbar的标签和字体大小
cbar.ax.set_ylabel('Value', fontsize=12)
# 调整子图和colorbar的位置
plt.subplots_adjust(bottom=0.15)
# 展示图像
plt.show()
```
运行上述代码会得到如下的图像:
其中,左侧的2×5个子图共享一个水平的colorbar,放置在所有子图的下方,大小适中。如果需要进一步定制colorbar的颜色、标签、字体大小等,可以根据具体需求调整代码。
阅读全文