使用Python和Matplotlib,我正在尝试生成一个由两个子图组成的图形,每个子图都包含一组带有共同颜色条的绘图。几乎所有的东西都可以工作。我唯一无法解决的部分是如何使顶部和底部子图具有相同的宽度-即4x2网格+颜色条应该与2x1网格+颜色条具有相同的宽度。故意让左下角的图像不与其他图形具有相同的形状。
我认为缺少的一步是访问每个子图的坐标轴(而不是子子图的坐标轴),但我不知道如何做到这一点。
我阅读了文档并查看了matplotlib.org上的示例。有一些示例展示了如何调整单独的
这是我拥有的代码:
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid, ImageGrid
from numpy.random import rand
fig = plt.figure(1)
grid1 = ImageGrid(fig, 211,
nrows_ncols = (2, 4),
axes_pad = 0.07,
share_all=True,
label_mode = "L",
cbar_location = "right",
cbar_mode="single",
cbar_size="7%",
cbar_pad="7%",
aspect = True
)
for n in range(8):
im = grid1[n].imshow(rand(10,10),interpolation="nearest")
grid1.axes_all
cb1 = grid1.cbar_axes[0].colorbar(im)
cb1.set_label_text('subfig 1')
grid2 = ImageGrid(fig, 212,
nrows_ncols = (1, 2),
axes_pad = 0.1,
label_mode = "L",
share_all = False,
cbar_location="right",
cbar_mode="single",
cbar_size="7%",
cbar_pad="7%",
aspect = True
)
im = grid2[0].imshow(rand(10,15),interpolation="nearest")
im = grid2[1].imshow(rand(10,10),interpolation="nearest")
cb2 = grid2.cbar_axes[0].colorbar(im)
cb2.set_label_text('subfig 2')
plt.figtext(0.05,0.85,'(a)',size=20)
plt.figtext(0.05,0.45,'(b)',size=20)
plt.show()
这是结果:
我认为缺少的一步是访问每个子图的坐标轴(而不是子子图的坐标轴),但我不知道如何做到这一点。
我阅读了文档并查看了matplotlib.org上的示例。有一些示例展示了如何调整单独的
grid[n]
,但我找不到任何展示如何调整grid
的示例。是否有人有任何提示?