Вы неправильно вызываете plt.subplots
. Вот пример использования по умолчанию
(nrows = 1, ncols = 1, sharex = False, sharey = False, squeeze = True, subplot_kw = None, gridspec_kw = None, ** fig_kw)
blockquote>Кажется, что вы хотите 5 подзаговоров в строке, поэтому установите
nrows=1
иncols=5
fig,axs = plt.subplots(nrows=1,ncols=5,sharey=True) ax, ax2, ax3, ax4, ax5 = axs
Проблема 2
Вы необходимо правильно установить шипы - вы хотите, чтобы слева и справа были видны. Это легко сделать с помощью функции:
def multi_spine_adj( axs): axs[0].spines['right'].set_visible(False) axs[0].yaxis.tick_left() for ax in axs[1:-1]: ax.spines['right'].set_visible(False) ax.spines['left'].set_visible(False) axs[-1].spines['left'].set_visible(False) axs[-1].yaxis.tick_right() #wvln0 = np.linspace( 0,5,50) # make some fake data #alb0 = np.random.random(50) #make some fake data opts = {'linestyle':'-', 'marker':'o', 'color':'r','linewidth':1,'label':'Haze = 0T'} fig,axs = plt.subplots(1,5,sharey=True) xlims = [(0.15,1.10), (1.15,2.25), (1.20,1.30), (1.55,1.65), (1.95,2.15)] for i,ax in enumerate(axs): x1,x2 = xlims[i] ax.plot(wvln0,alb0,**opts) ax.set_xlim(x1,x2) multi_spine_adj(axs) plt.show()
Совет
Обратите внимание, как вы можете легко перебирать
axs
, это делает ваш код более чистым и простым в изменении ( если вы хотите добавить больше перерывов, например)