On Mon, Jun 25, 2012 at 1:12 PM, mogliii <mogliii@...> wrote:
> Hi,
>
> In my script a variable number of graphs is generated. I want to place
> them in one column with arbitrary number of rows onto an A4 canvas (for
> pdf export).
>
> Unfortunately the figsize directive seems to have no effect. The figure
> is always 8x6 inch.
>
> Which code do I have to use in this case?
>
>
> My minimal code:
> #######################################
>
> import matplotlib.pyplot as plt
> from matplotlib.backends.backend_pdf import PdfPages
> import numpy as np
>
> x = np.arange(10)
> y = np.arange(10)
>
> fig_width_cm = 21 # A4 page
> fig_height_cm = 29.7
> inches_per_cm = 1 / 2.58 # Convert cm to inches
> fig_width = fig_width_cm * inches_per_cm # width in inches
> fig_height = fig_height_cm * inches_per_cm # height in inches
> fig_size = [fig_width, fig_height]
>
>
> pdf = PdfPages('outfile.pdf')
> fig = plt.figure(figsize = fig_size)
> allplots = 3 # This is the variable number of subplots
> f, axarr = plt.subplots(allplots, 1)
>
>
> for plot in range(allplots):
> axarr[plot].plot(x+plot, y)
>
> pdf.savefig()
> pdf.close()
>
>
Your call to "plt.subplots" is creating a new figure object, which never
gets the figsize parameter (only the old figure object has that set).
Cheers!
Ben Root
