Jae-Joon,

Brilliant! An even simpler solution! Thank you very much :)

Figure.savefig() also takes pad_inches as a keyword argument and it's  
default is 0.1 inches. If you set it to 0.0 inches it can sometimes  
crop some of the x-axis label. I have found that if you do

fig.savefig("a.pdf", bbox_inches='tight', pad_inches=0.03)

It's pretty good. Just for anybody who was interested.

Thanks again, Jae-Joon!
Regards,
--Damon

On 12 Aug 2009, at 17:22, Jae-Joon Lee wrote:

> get_tightbbox is a bit experimental feature and it is discouraged for
> an ordinary user (maybe the method should not be an public method).
> Unless you understand how the internal transformation thing works, I'm
> afraid there is not much thing you can do with its return value.
>
> Instead, you should use the savefig function with bbox_inches="tight"
> (it actually calls the get_tightbbox method with the proper renderer
> for you). For example,
>
> fig.savefig("a.pdf", bbox_inches="tight")
>
>
> Another approach to eliminate the space is to adjust the subplot
> parameters (note that the script you posted does not use Subplot, but
> it can be easily modified).
>
> http://matplotlib.sourceforge.net/faq/howto_faq.html?#automatically-make-room-for-tick-labels
>
> -JJ
>
>
>
>
> On Wed, Aug 12, 2009 at 11:35 AM, Damon
> McDougall<damon.mcdoug...@gmail.com> wrote:
>> Hello all,
>>
>> So I'm trying to use matplotlib's OO interface (so programming  
>> without using
>> 'from pylab import *') and found this useful
>> page:http://matplotlib.sourceforge.net/leftwich_tut.txt after much  
>> googling.
>>
>> My problem is that, in general, after producing a plot, I would  
>> open the
>> .pdf produced to find lots of whitespace that I don't want. The  
>> reason I
>> don't want the whitespace is that I want to include these figures  
>> in a latex
>> document and I want to maximise space. I did some reading and from  
>> what I
>> understand, Axes.get_tightbbox() is the correct tool to use to  
>> return a
>> tight bounding box which I can then use to adjust the Axes limits.  
>> Here is
>> the code I currently have:
>>
>>
>> import numpy as np
>> import matplotlib
>>
>> fig_width_pt  = 483.69687                     # figure width in pt as
>> returned by \showthe in LaTeX
>> inches_per_pt = 1.0/72.27
>> golden_ratio  = (np.sqrt(5) - 1.0) / 2.0
>> fig_width_in  = fig_width_pt * inches_per_pt  # figure width in  
>> inches
>> fig_height_in = fig_width_in * golden_ratio   # figure height in  
>> inches
>> fig_dims      = [fig_width_in, fig_height_in] # fig dims as a list
>>
>> matplotlib.use('PDF')
>> matplotlib.rc('font',**{'family':'serif','serif':['Computer Modern  
>> Roman']})
>> matplotlib.rc('text', usetex=True)
>> matplotlib.rc('axes', labelsize=10)
>> matplotlib.rc('legend', fontsize=10)
>> matplotlib.rc('xtick', labelsize=10)
>> matplotlib.rc('ytick', labelsize=10)
>> matplotlib.rc('font', size=10)
>> matplotlib.rc('figure', figsize=fig_dims)
>>
>> from matplotlib.backends.backend_pdf import FigureCanvasPdf as  
>> FigureCanvas
>> from matplotlib.figure import Figure
>> fig = Figure()
>> canvas = FigureCanvas(fig)
>> ax.fig_add_axes([0.2, 0.2, 0.5, 0.7])
>> ax.hold(True)
>> ax.grid(True)
>> plot_means = ax.plot(means, 'b', label='$m_k$')
>> plot_vars = ax.plot(vars, 'g', label='$\sigma_k^2$')
>> plot_ictruth = ax.axhline(y = x_0, xmin = 0, xmax = numtimes,  
>> color='r',
>> label='$x_0$')
>> ax.set_xlabel('$k$')
>> ax.legend(loc='upper right')
>> tightbox = ax.get_tightbbox()
>> canvas.print_pdf(a)
>>
>> The problem here is that get_tightbbox() takes 2 arguments, namely  
>> self and
>> renderer. My question is, what is a renderer and how do I  
>> instantiate/create
>> one? After some reading I think it's something to do with
>> maplotlib.backend_bases or something. Am I on the right track?  
>> After the
>> call I want to adjust the Axes limits to the thing returned by
>> get_tightbbox(), would ax.set_position(tightbox) do that here?
>>
>> Any help would be greatly appreciated.
>> Regards,
>> --Damon
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports  
>> 2008 30-Day
>> trial. Simplify your report design, integration and deployment -  
>> and focus
>> on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to