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 ?

- 57,703
- 61
- 205
- 388
-
1Isn't it possible to simply put some blank line(s) after the title? You could even play with the `linespacing` kwarg of `text`. – Jehan May 07 '13 at 13:26
-
1I found just adding \n after the string left the space I needed – ashley Nov 02 '17 at 15:51
5 Answers
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.

- 6,717
- 5
- 24
- 24
-
1You can do `ax.xaxis.labelpad=10.0` as well as `yaxis` and `zaxis` – Brian Wiley Feb 09 '20 at 01:55
-
2@TedoVrbanec For axis labels, you can do `ax.set_xlabel('label', labelpad=20)`. Adjust the `labelpad` parameter until you're happy. – apdnu Aug 26 '20 at 13:52
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.
You can just pass y
parameter into plt.suptitle
method:
plt.suptitle('Amazing Stats', size=16, y=1.12);

- 2,890
- 8
- 41
- 51
Using rcParams
:
from matplotlib import rcParams
rcParams['axes.titlepad'] = 20
where 20
is the padding between the plot and the title.

- 525
- 5
- 8
-
the documentation in the link only lists 'axes.titlepad'. possibly a typo? – keisuke Jun 13 '17 at 17:44
-
@keisuke Correct. Thank you for spotting this. I have updated the answer. – bmorgan Jun 22 '17 at 10:28
-
-
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 ;))

- 2,266
- 28
- 34
-
1i had an older version of matplotlib ... so i wasn't able to use the 'axes.titlepad' solutions. so yours worked great! thanks a million. – Trevor Boyd Smith Jun 25 '19 at 19:01