save_as_pdf_pages(plots, filename=None, path=None, verbose=True, **kwargs)

Save multiple ggplot objects to a PDF file, one per page.


plots : Iterable[ggplot]

Plot objects to write to file. plots may be either a collection such as a list or set

base_plot = ggplot(…)
plots = [base_plot + ggtitle('%d of 3' % i) for i in range(1, 3)]

or, a generator that yields ggplot objects:

def myplots():
    for i in range(1, 3):
        yield ggplot(…) + ggtitle('%d of 3' % i)
filename : Optional[str | Path] = None

File name to write the plot to. If not specified, a name like “plotnine-save-.pdf” is used.

path : str | None = None

Path to save plot to (if you just want to set path and not filename).

verbose : bool = True

If True, print the saving information.

kwargs : Any = {}

Additional arguments to pass to savefig.


Using pandas groupby methods, tidy data can be “faceted” across pages:

from import mtcars

def facet_pages(column)
    base_plot = [
        aes(x="wt", y="mpg", label="name"),
    for label, group_data in mtcars.groupby(column):
        yield ggplot(group_data) + base_plot + ggtitle(label)


Unlike save, save_as_pdf_pages does not process arguments for height or width. To set the figure size, add figure_size to the theme for some or all of the objects in plots:

plot = ggplot(…)
# The following are equivalent'filename.pdf', height=6, width=8)
save_as_pdf_pages([plot + theme(figure_size=(8, 6))])