Python 2.7 matplotlib子地块排列
我对调整子地块之间的间距有一些问题。虽然有很多关于类似问题的问题,但我找不到合适的解决方案 下面是一个简单的示例,其中一个图中有一个随机值图和两个带色条的图像:Python 2.7 matplotlib子地块排列,python-2.7,matplotlib,Python 2.7,Matplotlib,我对调整子地块之间的间距有一些问题。虽然有很多关于类似问题的问题,但我找不到合适的解决方案 下面是一个简单的示例,其中一个图中有一个随机值图和两个带色条的图像: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable fig, (ax1, ax2, ax3) = plt.subplots(figsize=(5, 8), nrows=3,
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig, (ax1, ax2, ax3) = plt.subplots(figsize=(5, 8), nrows=3, ncols=1)
ax1.plot(np.random.rand(100))
ax1.set_ylabel('y-label')
ax1.set_xlabel('x-label')
im2 = ax2.imshow(np.random.random(size=(50, 100)))
ax2.axes.get_xaxis().set_ticks([])
ax2.axes.get_yaxis().set_ticks([])
divider2 = make_axes_locatable(ax2)
cax2 = divider2.append_axes("right", "5%", pad="3%")
cbar2 = plt.colorbar(im2, cax=cax2, orientation='vertical')
im3 = ax3.imshow(np.random.random(size=(50, 100)))
ax3.axes.get_xaxis().set_ticks([])
ax3.axes.get_yaxis().set_ticks([])
divider3 = make_axes_locatable(ax3)
cax3 = divider3.append_axes("right", "5%", pad="3%")
cbar3 = plt.colorbar(im3, cax=cax3, orientation='vertical')
plt.tight_layout()
我怎样才能:
- 减少两个较低图像之间的间距,类似于绘图和第一个图像之间的距离
- 将两个图像向左移动,使其与绘图的y标签对齐
tight_layout
,因为这会再次扰乱所有精心设置的参数
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
from matplotlib.gridspec import GridSpec
fig = plt.figure(figsize=(5, 8))
gs = GridSpec(nrows=4, ncols=2,height_ratios=[1.2, .1, .8, .8],
width_ratios=[.1, 1],
hspace=0.05, wspace=0.1,
left=0.05, right=0.9,
bottom=0.02, top=0.98)
ax1=fig.add_subplot(gs[0,1])
ax2=fig.add_subplot(gs[2,:])
ax3=fig.add_subplot(gs[3,:])
ax1.plot(np.random.rand(100))
ax1.set_ylabel('y-label')
ax1.set_xlabel('x-label')
im2 = ax2.imshow(np.random.random(size=(50, 100)))
ax2.axes.get_xaxis().set_ticks([])
ax2.axes.get_yaxis().set_ticks([])
divider2 = make_axes_locatable(ax2)
cax2 = divider2.append_axes("right", "5%", pad="3%")
cbar2 = plt.colorbar(im2, cax=cax2, orientation='vertical')
im3 = ax3.imshow(np.random.random(size=(50, 100)))
ax3.axes.get_xaxis().set_ticks([])
ax3.axes.get_yaxis().set_ticks([])
divider3 = make_axes_locatable(ax3)
cax3 = divider3.append_axes("right", "5%", pad="3%")
cbar3 = plt.colorbar(im3, cax=cax3, orientation='vertical')
plt.show()