Increase distance between title and plot in matplolib?

Question:

I have a simple plot in matplotlib and I would like to increase the distance between the title and the plot (without using suptitle because it does not work on the version I use on a server). How to do that ?

Asked By: Vincent

||

Answers:

There doesn’t seem to be a clean way to set this directly (but might be worth a feature request to add that), however the title is just a text artist, so you can reach in and change it.

#ax = plt.gca()
ttl = ax.title
ttl.set_position([.5, 1.05])
#plt.draw()

should do the trick. Tune the 1.05 to your liking.

Answered By: tacaswell

Using rcParams:

from matplotlib import rcParams
rcParams['axes.titlepad'] = 20 

where 20 is the padding between the plot and the title.

From https://matplotlib.org/users/customizing.html

Answered By: bmorgan

With matplotlib 2.2+, you can use the keyword argument pad:

ax.set_title('Title', pad=20)

Adjust pad until you’re happy with the axis title position. The advantage of this method over using rcParams is that it only changes this one axis title.

Answered By: apdnu

You can just pass y parameter into plt.suptitle method:

plt.suptitle('Amazing Stats', size=16, y=1.12);      
Answered By: CanCeylan

Another possibility is to reduce the relative size of the plot with respect to the whole figure window. In that way the distance between title and plot increases.

Before showing the plot, i.e. before plt.show(), write following command:

#The standard value of 'top' is 0.9,
#tune a lower value, e.g., 0.8
plt.subplots_adjust(top=0.8) 

This method has the advantage over @CanCeylan method that the title never goes out of the figure window; because if the title is large enough, then moving it upwards through the parameter y in suptitle might move the title outside the figure. (as it happened to me ;))

Answered By: loved.by.Jesus