I have the following code:
listofmodels = [resultmodeldistancearlylife,resultmodeldurationearlylife,resultmodeldistancenavigate,resultmodeldurationnavigate,resultmodeldistancetravel,resultmodeldurationtravel,resultmodeldistancevideo,resultmodeldurationvideo,resultmodeldistancelifestyle,resultmodeldurationlifestyle,resultmodeldistancegrow,resultmodeldurationgrow,resultmodeldistancesleep,resultmodeldurationsleep,resultmodeldistancedemographics,resultmodeldurationdemographics]
names = ['resultmodeldistancearlylife','resultmodeldurationearlylife','resultmodeldistancenavigate','resultmodeldurationnavigate','resultmodeldistancetravel','resultmodeldurationtravel','resultmodeldistancevideo','resultmodeldurationvideo','resultmodeldistancelifestyle','resultmodeldurationlifestyle','resultmodeldistancegrow','resultmodeldurationgrow','resultmodeldistancesleep','resultmodeldurationsleep','resultmodeldistancedemographics','resultmodeldurationdemographics']
for i in range(len(listofmodels)):
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.tight_layout()
plt.title(names[i],loc='left')
sns.residplot(listofmodels[i].predict(), y, lowess=True, scatter_kws={'alpha': 0.5}, line_kws={'color':'red'}, ax=axes[0,0])
axes[0,0].title.set_text('Residuals vs Fitted Linearity Plot')
axes[0,0].set(xlabel='Fitted', ylabel='Residuals')
sm.ProbPlot(listofmodels[i].resid).qqplot(line='s', color='#1f77b4', ax=axes[1,0])
axes[1,0].title.set_text('QQ Plot')
standardized_resid1 = np.sqrt(np.abs(listofmodels[i].get_influence().resid_studentized_internal))
sns.regplot(listofmodels[i].predict(), standardized_resid1, color='#1f77b4', lowess=True, scatter_kws={'alpha': 0.5}, line_kws={'color':'red'}, ax=axes[0,1])
axes[0,1].title.set_text('Homeodasticity Plot')
axes[0,1].set(xlabel='Fitted', ylabel='Standardized Residuals')
However, when I run the code, the subplot graph axis labels overlap:
The plt.tight_layout() function thus does not seem to be working.
Would anybody be able to give me a helping hand? I would be so grateful
2
Answers
This was solved by using the following command:
I also changed the position of the figure label using:
Final code:
The title and labels, and maybe axes numbers, are placed in the space between the grids.
The default space is just enough for one text.
You have to increase the spacing with
figure.add_gridspec()
You can also move the titles and labels outside the for loop.