Python 为动态创建的子地块共享y轴

Python 为动态创建的子地块共享y轴,python,matplotlib,Python,Matplotlib,工作示例 import matplotlib.pyplot as plt names = ['one','two','three'] upper = [[79,85,88],[79,85,88],[79,85,88]] lower = [[73,72,66],[73,72,66],[73,72,66]] fig = plt.figure(1) for idx,lane in enumerate(names): ax = fig.add_subplot(1,len(names)+1,idx

工作示例

import matplotlib.pyplot as plt
names = ['one','two','three']
upper = [[79,85,88],[79,85,88],[79,85,88]]
lower = [[73,72,66],[73,72,66],[73,72,66]]
fig = plt.figure(1)
for idx,lane in enumerate(names):
    ax = fig.add_subplot(1,len(names)+1,idx+1)
    ax.plot(upper[idx], color='tab:blue', marker='x', linestyle="None")
    ax.plot(lower[idx], color='tab:blue', marker='x', linestyle="None")
    ax.set_title(lane)
plt.show()

这将动态生成3个绘图。这是可行的,我很可能没有使用动态生成绘图的最佳实践。目标是使生成的所有绘图共享Y轴,以便使其看起来更清晰。我查阅的所有示例都表明,可以将共享轴指定给以前使用的轴,但在我的示例中,所有绘图都是动态创建的。是否有一种方法可以将图形中的所有子地块合并为共享同一y轴?

创建具有多个轴的图形的常用方法是,它接受
sharey=True
参数


例如:

将numpy导入为np
将matplotlib.pyplot作为plt导入
扩展数据=np.linspace(0,10100)
ydata_1=np.sin(扩展数据)
ydata_2=np.cos(扩展数据)
图(ax1,ax2)=plt.子批(1,2,sharey=True,figsize=(8,4))
ax1.绘图(扩展数据、ydata_1)
ax2.绘图(扩展数据、ydata_2)
这将产生:

为了减少打印之间的空间,还可以使用
tight_layout=True
参数


使用您的数据,您可以将其改写为

fig,axes=plt.子图(1,len(名称),sharey=True,tight_layout=True)
对于枚举(zip(轴,名称))中的idx(ax,name):
ax.plot(上[idx],color='tab:blue',marker='x',linestyle=“无”)
ax.plot(下[idx],color='tab:blue',marker='x',linestyle=“无”)
ax.集合标题(名称)
plt.show()

您是否尝试过
fig=plt.figure(1,sharey=True)
?所有示例都使用了您共享的第一个示例。知道它可以返回一个轴列表非常有用。光滑的溶液。