I have slightly modified the example from
http://matplotlib.sourceforge.net/faq/howto_faq.html#automatically-make-room-for-tick-labels
in order to demonstrate what I mean.

It works with the manual string tick labels but not with regular
auto-generated numerical ones.

Maybe someone knows how to fix this? And I *really* think this should
work automatically. As a compromise, maybe an rcParam would help in
order to keep the current dumb behavior...

Thanks in advance,
Daniel



import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms

fig = plt.figure(figsize=(5,3))
ax = fig.add_subplot(111)

#ax.plot(range(10))
#ax.set_yticks((2,5,7))
#labels = ax.set_yticklabels(('really, really, really', 'long', 'labels'))
ax.plot(range(100),[100000]*100)
labels = ax.get_yticklabels()

def on_draw(event):
   bboxes = []
   for label in labels:
       bbox = label.get_window_extent()
       print bbox
       # the figure transform goes from relative coords->pixels and we
       # want the inverse of that
       bboxi = bbox.inverse_transformed(fig.transFigure)
       bboxes.append(bboxi)

   # this is the bbox that bounds all the bboxes, again in relative
   # figure coords
   bbox = mtransforms.Bbox.union(bboxes)
   if fig.subplotpars.left < bbox.width:
       # we need to move it over
       fig.subplots_adjust(left=1.1*bbox.width) # pad a little
       fig.canvas.draw()
   return False

fig.canvas.mpl_connect('draw_event', on_draw)

plt.show()

------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in 
Real-Time with Splunk. Collect, index and harness all the fast moving IT data 
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business 
insights. http://p.sf.net/sfu/splunk-dev2dev 
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to