views:

369

answers:

1

With say 3 rows of subplots in matplotlib, xlabels of one row can overlap the title of the next;
one has to fiddle with pl.subplots_adjust( hspace ), annoying.
Is there a recipe for hspace that prevents overlaps and works for any nrow ?

""" matplotlib xlabels overlap titles ? """
import sys
import numpy as np
import pylab as pl

nrow = 3
hspace = .4  # of plot height, titles and xlabels both fall within this ??
exec "\n".join( sys.argv[1:] )  # nrow= ...

y = np.arange(10)
pl.subplots_adjust( hspace=hspace )

for jrow in range( 1, nrow+1 ):
    pl.subplot( nrow, 1, jrow )
    pl.plot( y**jrow )
    pl.title( 5 * ("title %d " % jrow) )
    pl.xlabel( 5 * ("xlabel %d " % jrow) )

pl.show()

My versions: matplotlib 0.99.1.1, python 2.6.4, Mac osx 10.4.11,
backend: Qt4Agg (TkAgg => Exception in Tkinter callback)

(For many extra points, can anyone outline how matplotlib's packer / spacer works, along the lines of chapter 17 "the packer" in the Tcl/Tk book ?)

A: 

I find this quite tricky, but there is some information on here. It is rather cumbersome, and requires finding out about what space individual elements (ticklabels) take up...

Jose
accept, but cumbersome indeed -- mttiw, more trouble than it's worth
Denis