我无法使用subplot和gridspec生成布局,同时仍然保留(1)轴的比率和(2)对轴施加的限制。另一种解决方案是手动将轴放置在图形中,并相应地控制图形的大小(正如您在OP中所提到的)。尽管这比使用subplot和gridspec需要更多的工作,但是这种方法仍然非常简单,可以非常强大和灵活地生成复杂的布局,其中需要对边距和轴的位置进行精确控制。在
下面是一个例子,它展示了如何通过将图形的大小设置为轴的大小来实现这一点。相反地,它也有可能在一个预定尺寸的图形中拟合轴。然后使用图形边距作为缓冲区来保持轴的纵横比。在import numpy as np
import matplotlib.pyplot as plt
plt.close('all')
# generate data
# generate grid and test data
x, y = np.linspace(-3, 3, 300), np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x,y)
def f(x,y) :
return np.exp(-(x**2/4+y**2)/.2)*np.cos((x**2+y**2)*10)**2
data = f(X,Y)
# 2d image plot with profiles
h, w = data.shape
data_ratio = h / float(w)
# create figure
# - define axes lenght in inches
width_ax0 = 8.
width_ax1 = 2.
height_ax2 =